2011-08-30 4 views
2

디버깅 목적으로 nlog를 사용하여 로그 파일을 작성하고 있습니다. 현재 로그 파일 위치가 설정됩니다로그 파일을 쓸 위치는?

<target 
    name="file" 
    xsi:type="File" 
    fileName="${specialfolder:folder=LocalApplicationData}/x/y.log" 

하지만 asp.net/IIS이 NETWORK SERVICE 계정으로 실행에 기대하는 것처럼이는 파일이 c:\x\y.log하지 %windir%\ServiceProfiles\NetworkService\AppData\Local\x\y.log에 기록되는 결과입니다.

웹 응용 프로그램에서 Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData)의 값을 확인하면 비어있는/널 (null/null) 문자열이 생깁니다. 이는 적어도 내 로그가 루트로 끝나는 이유를 설명합니다.

그래서 정말 두 가지 질문 :

우리는 제대로이 경로를 해결 작성하고 NETWORK SERVICE 계정에서 실행중인 서비스가 있습니다. 이 특별한 폴더에 값을 반환하지 않는 asp.net/IIS의 특별한 점은 무엇입니까?

내 asp.net 프로세스가 NETWORK SERVICE 계정으로 실행 중일 때 안전하고 합리적인 곳에 로그를 기록 할 수있는 곳은 어디입니까?

+0

IIS 6 또는 7을 사용하고 있습니까? – ccellar

+0

IIS7 on server2008 – spender

답변

1

제가 아는 경우, IIS가 사용자 네트워크 서비스의 프로필을로드하지 않는 것이 문제입니다.

당신은 당신이 true이 매개 변수를 설정하면, Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData)에 대한 호출이 올바른 결과를 반환해야합니다 응용 프로그램 풀의 속성 (source)

load the user profile of the application pool identity

에서이 설정을 조정할 수 있습니다.

은 참조 : 작동하지 않는 경우

, 나는 서비스 계정에 대한 적절한 권리가있는 폴더를 만들 추천 로깅 목적.

+0

완벽합니다. 나는 당신의 마지막 선택을 위해가는 것을 끝내었다. 그러나 내가 잘못 가고 있었던 곳을 알고있는 것이 좋다. – spender

관련 문제