我正在使用nlog写日志文件以进行调试。目前,日志文件位置设置为:
<target
name="file"
xsi:type="File"
fileName="${specialfolder:folder=LocalApplicationData}/x/y.log"
但是这导致文件被写入c:\x\y.log
,而不是%windir%\ServiceProfiles\NetworkService\AppData\Local\x\y.log
,正如我期望在NETWORK SERVICE
帐户下运行asp.net/IIS。
从Web应用程序检查Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData)
的值会产生一个空/空字符串,这至少可以解释为什么我的日志在根目录中结束。
真的有两个问题:
我们在NETWORK SERVICE
帐户下编写并运行了正确解析此路径的服务。 asp.net/IIS有什么特别之处,这个特殊文件夹没有返回值?
鉴于我的asp.net进程在NETWORK SERVICE
帐户下运行,在哪里写日志是一个安全而明智的地方?
答案 0 :(得分:1)
如果我的知识是正确的,问题是IIS不会加载用户网络服务的配置文件。
您可以在应用程序池的属性(source)
中调整此设置
如果您将此参数设置为true
,则对Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData)
的调用应返回正确的结果。
另见:
如果它不起作用,我建议创建一个具有服务帐户相应权限的文件夹,以便进行日志记录。