2012-09-12 2 views
7

그래, 내가 여기서 아주 쉽게 뭔가를하고 있다고 믿는다. ASP.NET 웹 페이지를 작성했으며 로컬 디렉토리에 쓰려고합니다.로그 파일을 쓸 수 있도록 ASP.NET 디렉터리를 구성하려면 어떻게합니까?

System.IO.File.WriteAllLines("log.txt", messages); 

나는 다음과 같은 예외를 던지고 :

나는 다음과 같은 코드를 사용하고 있습니다.

Access to the path 'c:\windows\system32\inetsrv\log.txt' is denied. 

내 ASP.NET 응용 프로그램은 다음 디렉터리에 있습니다.

c:\inetpub\wwwroot\sites\mysite\ 

그래서 나뿐만은 C로 작성하려고하는 이유에 대한 혼란 스러워요 : \ WINDOWS \ system32를 \ 내가 그 디렉토리 자체를 제공하고 있지 않다 inetsrv를 \ 디렉토리.

다음 코드를 변경해 보았지만 새 디렉터리와 동일한 오류 메시지가 나타납니다.

System.IO.File.WriteAllLines("c:\\inetpub\\wwwroot\\sites\mysite\log.txt", messages); 

편집 한

모두가 정말 톤을 저를 도와 때문이에 대한 답변을 받아 힘들었다. 나는 tom_yes_tom의 대답을 받아 들였다. 왜냐하면 그는 나의 문제의 전반부 인 그의 대답을 처음으로 게시했기 때문이다. 내 문제의 나머지 절반은 Fabio가 지적한 hbrock의 해결책과 관련이 있습니다.

+0

을 – kd7

답변

7

"C : \ inetpub \ wwwroot \ sites \ mysite \ App_Data"폴더를 만들고 대신 데이터를 저장하십시오. 당신은 절대적으로 내 사이트 디렉토리에 저장해야하는 경우

System.IO.File.WriteAllLines(Server.MapPath("~/App_Data/log.txt")) 

하는 것은 적절가 로그 파일을 퍼팅의 보안 파급 효과 및 설정 디렉토리 권한을 인식해야합니다. IIS가 실행되는 사용자는 해당 디렉터리를 읽고 쓸 수 있어야합니다.

전체 자격 경로 : System.Web.HttpContext.Current.Server

+0

ASP.NET 응용 프로그램의 풀이 실행 중입니까? – meanbunny

+0

이 방법을 사용했지만 여전히 동일한 오류가 발생했습니다. 'C : \ inetpub \ wwwroot \ sites \ mysite \ production \ App_Data \ log.txt '가 거부되었습니다 – meanbunny

1

이 도움이 될 것입니다

읽기 허용, 쓰기, Windows 탐색기에서 특정 파일

에 대한 사용 권한을 수정, 찾아 필요한 파일을 선택합니다.

파일을 마우스 오른쪽 단추로 누른 다음 속성을 누릅니다.

속성 대화 상자에서 보안 탭을 클릭하십시오.

보안 탭에서 사용자 목록을 검사하십시오. 네트워크 서비스 계정이 목록에 없으면 추가하십시오.

속성 대화 상자에서 네트워크 서비스 사용자 이름을 클릭하고 네트워크 서비스 사용 권한 섹션에서 읽기, 쓰기 및 수정 권한을 선택합니다.

적용을 누른 다음에서 확인

정보를 클릭하십시오 거부 : 당신은 경로에 "액세스 '창을 \ \ system32를 \ inetsrv를 \ log.txt에이 C'를 수신하고 http://msdn.microsoft.com/en-us/library/ff647402.aspx#paght000015_fileaccess

+0

나는 또한이 보안 문제가있었습니다. 내 첫 번째 시도는 공간없이 NetworkService를 추가하는 것이었고 보안 객체를 인식하지 못해서 그 접근법을 포기했지만 @Fabio Gouw가 지적했듯이 공간이 필요했다. – meanbunny

3

합니다."c : \ windows \ system32 \ inetsrv는 IIS 실행 파일이있는 디렉토리 (w3wp.exe)이기 때문에 System.IO.File.WriteAllLines ("log.txt ", messages)를 실행할 때

그것은 당신에게 당신의 가상 디렉토리의 실제 경로를 제공하므로. 사용자가 가상 ​​디렉터리의 응용 프로그램 풀을 실행

봐는 Server.MapPath를 사용하고, 그 가상 디렉토리의 폴더에 쓰기 권한을 부여합니다. 어떤 정체성

+0

좋아, 그럼 내가 응용 프로그램 풀을 보니 그것의 신원 -> NetworkService 말한다. NetworkService가 실제 사이트 디렉토리의 사용 권한 목록에 없습니다. – meanbunny

+0

NETWORK SERVICE – Fabio

+0

폴더에 대한 쓰기 권한을 부여하기 위해 @ hbrock의 지시를 따르십시오. 다시 시도하겠습니다. 나는 공간이없는 NetworkService를 시도하여 내 문제가되었을 수도있다. – meanbunny

관련 문제