2012-09-05 2 views
0

IIS6에서 웹 사이트를 게시했습니다.파일 저장 중 System.UnauthorizedAccessException

File.WriteAllText ("C : \"+ txtSaveExport.Text + ".CSV", b.ToString());로 파일을 저장할 때. 해당 오류로 제공합니다 :

em.UnauthorizedAccessException : 'C : \ hj.CSV'경로에 대한 액세스가 거부되었습니다. ASP.NET은 요청 된 리소스에 액세스 할 수있는 권한이 없습니다. 리소스에 대한 액세스 권한을 ASP.NET 요청 ID에 부여하는 것이 좋습니다. ASP.NET은 응용 프로그램이 가장하지 않는 경우 사용되는 기본 프로세스 ID (일반적으로 IIS 5의 {MACHINE} \ ASPNET 또는 IIS 6 및 IIS 7의 네트워크 서비스 및 IIS 7.5의 구성된 응용 프로그램 풀 ID)를 갖습니다. 응용 프로그램이을 통해 가장하는 경우 ID는 익명 사용자 (일반적으로 IUSR_MACHINENAME) 또는 인증 된 요청 사용자가됩니다.

ASP.NET 액세스를 파일에 부여하려면 탐색기에서 파일을 마우스 오른쪽 단추로 클릭하고 "속성"을 선택한 다음 보안 탭을 선택하십시오. 적절한 사용자 또는 그룹을 추가하려면 "추가"를 클릭하십시오. ASP.NET 계정을 강조 표시하고 원하는 액세스 상자를 선택하십시오. "

어떻게 처리 할 수 ​​있습니까?

+0

당신이하고있는 일은 전혀 권장되지 않지만, 단지 그것을하고 싶다면, C 드라이브에 쓰기 권한'Network Service'를주십시오. –

+0

선생님하고 싶지 않습니다. 이 웹 사이트가 실행되는 곳이면 어디서나 해당 웹 사이트를 유추합니다. 그것의 허가를 요구했다. – Aada

+0

그런 경우에는 "C : \"드라이브에 쓰지 말고 "~ \ APP_DATA"응용 프로그램 폴더와 같은 특정 폴더를 사용하여 asp.net에서 이러한 작업을 수행해야합니다. 당신은'app_data' 폴더에 쓰기 권한을 주어야합니다. –

답변

1

해당 폴더의 Aspnet 사용자에게 쓰기 권한을 부여해야합니다. http://devnet.logixml.com/rdPage.aspx?rdReport=Article&dnDocID=209

감사합니다 :

이를 참조하십시오.

+0

안녕하세요. 서버에 저장하지 말고 로컬 컴퓨터 사용자에게 사용하십시오 – Aada

+0

클라이언트 하드 드라이브에 쓰는 척한 적이 있습니까? : -O 플러그인 (애플릿, 플래시, ActiveX)이 없으면 알 수 없습니다. 당신은 whatt와 웹 어플리케이션이 아닌 것에 대해 더 많이 읽어야합니다. – Oscar

0

C : 드라이브 아래의 변수 디렉토리에 쓰는 것은 좋지 않습니다. C로 작성하는 권한을주지 말고, 웹 응용 프로그램의 디렉토리 아래에있는 디렉토리에 작성하십시오.이 디렉토리는 Server.MapPath("~")까지 얻을 수 있습니다. 앱 디렉토리 아래의 폴더에 애플리케이션 풀의 사용자 계정에 대한 쓰기 권한을 부여하면 훨씬 안전 해집니다.

+0

로컬 드라이브에 저장하고 싶습니다. – Aada

+0

아, 브라우저를 사용하여 파일을 다운로드 하시겠습니까? 그렇다면 대답에 언급 한 것처럼 앱의 디렉토리 아래에 임시로 이름을 지정하여 서버에 임시로 생성하십시오. 저장 한 후 사용자를 파일로 리디렉션하십시오. File.WriteAllText (Server.MapPath ("~") + "myfile.txt")에 파일을 저장하면 페이지로드 코드 인 : Response.Redirect ("/ myfile. txt ")' –

관련 문제