Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net log4net不在IIS 6.0中写入_Asp.net_Logging_Asp Classic_Iis 6_Log4net - Fatal编程技术网

Asp.net log4net不在IIS 6.0中写入

Asp.net log4net不在IIS 6.0中写入,asp.net,logging,asp-classic,iis-6,log4net,Asp.net,Logging,Asp Classic,Iis 6,Log4net,我有以下log4net配置: <log4net> <appender name="Console" type="log4net.Appender.ConsoleAppender"> <layout type="log4net.Layout.PatternLayout"> <!-- Pattern to output the caller's file name and line number --> <conversion

我有以下log4net配置:

<log4net>
<appender name="Console" type="log4net.Appender.ConsoleAppender">
  <layout type="log4net.Layout.PatternLayout">
    <!-- Pattern to output the caller's file name and line number -->
    <conversionPattern value="%date [%thread] %-5level %ndc - %message%newline" />
  </layout>
</appender>

<appender name="RollingFile" type="log4net.Appender.RollingFileAppender">
  <file value="C:/logs/mysystem.log" />
  <appendToFile value="true" />
  <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
  <maximumFileSize value="1024MB" />
  <maxSizeRollBackups value="30" />

  <layout type="log4net.Layout.PatternLayout">
    <conversionPattern value="%date [%thread] %-5level - %message%newline" />
  </layout>
</appender>

<root>
  <level value="DEBUG" />
  <appender-ref ref="Console" />
  <appender-ref ref="RollingFile" />
</root>

在本地计算机中,它可以正常工作,但当我将网站部署到远程服务器(IIS 6.0)时,它不会创建日志文件,尽管系统正在运行

AppPool标识配置为“网络服务”


有什么想法吗?

当应用程序池配置为“网络服务”时,它没有足够的权限写入文件系统,因此不会创建日志文件

将应用程序池的标识配置为“本地系统”,它将正常工作

您可以通过以机器名称为原则在文件夹上创建ACE来授予对日志文件夹的“网络服务”访问权限。将池标识更改为“本地系统”可能会产生不良影响,因此我将避免这种情况


另一种方法是创建一个域用户并将该用户添加到机器IIS\U WPG组。更改池标识以使用此用户。然后,您可以授予此用户适当的文件夹访问权限。

值得指出的是,“本地系统”还授予管理员级别的服务器访问权限,而“网络服务”没有,而且“本地系统”也没有访问网络的权限,因此任何尝试访问(例如)网络共享的ASP代码都将失败。我使用的是ASP.NET,但我认为你对经典ASP的看法是对的,在这种情况下,我所说的也适用于ASP.NET。在安全访问权限方面,ASP classic的不同之处在于它总是强制模拟脚本执行。