2017-04-26 6 views
0

제 작업의 일부는 iSeries IFS 또는이 경로 (특히 \ ServerIPAddress \ home \ test \ )에 파일을 쓰는 것입니다. ASP 내가 그 디렉토리에 대한 간단한 텍스트 파일을 작성하는 데 사용할 .NET 웹 응용 프로그램이 작업을 수행하고,이 코드 (C#을)입니다 :ASP.NET 웹 응용 프로그램에서 IBM iSeries IFS에 간단한 텍스트 파일을 작성하십시오.

 string filename = @"\\SomeIPAdress\home\test\test.txt"; 
     byte[] file = Encoding.ASCII.GetBytes("hello world"); 
     FileStream fs = new FileStream(filename, FileMode.OpenOrCreate); 
     fs.Write(file, 0, file.Length); 
     fs.Close(); 

이 코드를 실행, 프로그램이 저를 준다 "액세스 거부"오류

예외 정보 : System.UnauthorizedAccessException : '\ SomeIPAddress \ home \ test \ test.txt'경로에 대한 액세스 권한이 없습니다. 거부되었습니다.

ASP.NET은 요청한 리소스에 액세스 할 수있는 권한이 없습니다. ...

IBM UID와 암호를 사용하여 Windows 파일 탐색기를 사용하여이 디렉터리 \ SomeIPAddress \ home \ test에 액세스 할 수 있으며이 파일을 만들고 편집 할 수 있습니다. 텍스트 파일을 수동으로 또한.

나는 그것이 그 UID와 패스워드를 제공함으로써 나의 ASP.NET 애플 리케이션에 대한 권한을 부여하는 것과 무언가를 가져야 만한다는 것을 알고 있지만, 나는 그것을 이해할 수 없다. 나는 며칠 동안 갇혀있다.

추가 정보가 필요하면 알려주세요. 도움을 주셔서 감사합니다

+0

사이트의 응용 프로그램 풀을 실행하는 사용자는 무엇입니까? 해당 사용자의 액세스 권한을 확인하십시오. –

+0

IIS APPPOOL \ DefaultAppPool이라고 생각합니다. 해당 사용자의 액세스 권한을 어떻게 확인할 수 있습니까? –

+1

해당 리소스에 액세스 할 수있는 해당 응용 프로그램 풀 전용 서비스 계정을 만들어야합니다. 일단 서비스 계정을 만들면 서비스 계정으로 로그인하여 권한이 작동하는지 확인하거나 [RunAs] (https://technet.microsoft.com/en-us/library/cc771525(v= ws.11))를 사용하면됩니다. .aspx). –

답변

1

나를 솔루션으로 이끌어 준 Thanks Mike Wills. 이것은 내가이 답변으로 도움을 here

DisconnectFromShare(@"\\server-a\DBFiles", true); //Disconnect in case we are currently connected with our credentials; 

ConnectToShare(@"\\server-a\DBFiles", username, password); //Connect with the new credentials 

if (!Directory.Exists(@"\\server-a\DBFiles\")) 
    Directory.CreateDirectory(@"\\server-a\DBFiles\"+Test); 
File.Copy("C:\Temp\abc.txt", @"\\server-a\DBFiles\"); 

DisconnectFromShare(@"\\server-a\DBFiles", false); //Disconnect from the server. 

고마워에서입니다 P/호출 WNET 연결을 사용하여 네트워크 공유에 연결하는 데 사용하는 코드입니다.

0

나는 생각합니다 this 당신이 무엇을 찾고 있습니다. 죄송합니다. 현재 작동하는 코드에서 액세스 할 수 없습니다. 정말 간단하고 완벽하게 일했습니다.

내 작업 코드가 필요하면 알려주십시오. 내일 알려 드리겠습니다.

업데이트 : 죄송합니다. 이전에 코드를 게시하지 않았으므로 직장에 휩쓸 렸습니다.

NetworkCredential nc = new NetworkCredential("user", "password", "domain"); 

using (new NetworkConnection(@"\\server\directory1\directory2", nc)) 
{ 
    // your IO logic here 
} 
+0

고마워요! 귀하의 링크에서 몇 가지 솔루션을 시도하고 있지만 코드를 게시 할 수 있다면 좋을 것입니다. 다시 한번 감사드립니다. –

+0

제공 할 코드 샘플로 답변을 업데이트했습니다. 죄송합니다. 숨을 쉬지 않고 시간을 보내지 않고도 한 가지에서 다른 것으로 뛰어 들고 있습니다. –

1

두 가지 해결책. 모범 사례. iseries가 네트워크의 다른 모든 것과 동일한 도메인 컨트롤러를 사용하도록 설정하십시오. 그런 다음 액세스를 요청하고 IFS에 대한 액세스를 허용하는 asp.net 계정을 알게됩니다.

또는

설정 IFS의를 가리키는 asp.net 페이지를 호스팅하는 컴퓨터에 매핑 된 드라이브. 매핑 된 드라이브는 자격 증명을 볼트에 저장합니다.

+0

나는 과거에이 두 옵션에 문제가있었습니다. –