Visual studio 2008 log4net-附录不在IIS7.5中工作
我能够使用log4net和Cassini/iisdev服务器写入日志文件,但当我使用IIS7.5时,我无法写入文件 最初,我得到了一个安全异常,因此我添加了Visual studio 2008 log4net-附录不在IIS7.5中工作,visual-studio-2008,iis,windows-7,asp.net-3.5,log4net,Visual Studio 2008,Iis,Windows 7,Asp.net 3.5,Log4net,我能够使用log4net和Cassini/iisdev服务器写入日志文件,但当我使用IIS7.5时,我无法写入文件 最初,我得到了一个安全异常,因此我添加了requirecommission=“false”,异常消失了,但没有创建任何文件 根据IISM,信任级别已满 我无法在自己的机器上工作,我想知道当我转到ISP(discountASP)时会发生什么 以下是log4net设置: C# log4net.Config.XmlConfigurator.Configure(); ILog Log=
requirecommission=“false”
,异常消失了,但没有创建任何文件
根据IISM,信任级别已满
我无法在自己的机器上工作,我想知道当我转到ISP(discountASP)时会发生什么
以下是log4net设置:
C#
log4net.Config.XmlConfigurator.Configure();
ILog Log=log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
Log.Info(“这是一项测试”);
有什么线索吗
ASP.NET 3.5、VS2008、Windows 7、IIS7.5、log4net 1.2.10
编辑:
我使用了Cassini中运行的测试web应用程序,并在IIS7.5中运行了它,因此我的web应用程序有一个特定的东西阻止log4net运行。有
在it中,ELMAH、输出缓存、AJAX控制工具包、表单身份验证、ssl、url重写等都在进行中。。。除了将它们添加到测试应用程序之外,还有更好的方法来找出是什么导致log4net工作的吗
更新:
我使用AdonNetAppender来避免文件权限问题,并且仍然得到相同的结果。AdonNetAppender适用于运行在Cassini和IIS上的测试应用程序,但不适用于我的web应用程序。获取以下异常:
System.Security.SecurityException:请求“System.Configuration.ConfigurationPermission,System.Configuration…”类型的权限失败
更新2:
我错误地认为测试webapp fileAppender在IIS7.5中工作。情况就是这样:TestWebApp fileAppender和AdoDotNetAppender都在Cassini/IIS开发中工作,但在IIS7.5中不工作。所以我认为问题出在IIS,而不是我的网络应用
注意。我以管理员身份运行VS2008,但以非管理员身份登录Windows 7。另外,我运行的是Windows7家庭高级版,不是专业版
我授予网络服务对web根目录的完全权限,但仍然没有创建任何文件。也给了每个人完全的权限,没有文件
由于adoDotNetAppender也不起作用(但在dev IIS中起作用),我认为除了文件权限之外,可能还有另一个问题
更新3:
我让它为IIS7上的文件附加器工作。如果我加上:
如果用户是管理员,它就可以工作。如果是我,不是管理员,那就不是了。所以这是一个权限问题。但我确实授予了每个人对该文件之前写入的目录的权限,但该目录不起作用,所以其他地方有权限设置。此外,虽然FileAppender现在可以处理模拟,但AdoNetAppender仍然不在IIS7中。我试着加上:
到AdonNetAppender部分,但仍然保持沉默失败
我为任何能帮助我让AdoNetAppender使用IIS7.5的人增加了一笔奖金。
更新4:
我终于找到了堆栈的踪迹。这是:
log4net:ERROR [AdoNetAppender] Failed in DoAppend
System.Security.SecurityException: Request for the permission of type 'System.Security.Permissions.SecurityPermission, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' failed.
at log4net.Util.LogicalThreadContextProperties.GetProperties(Boolean create)
at log4net.Core.LoggingEvent.CreateCompositeProperties()
at log4net.Core.LoggingEvent.CacheProperties()
at log4net.Core.LoggingEvent.FixVolatileData(FixFlags flags)
at log4net.Core.LoggingEvent.set_Fix(FixFlags value)
at log4net.Appender.BufferingAppenderSkeleton.Append(LoggingEvent loggingEvent)
at log4net.Appender.AppenderSkeleton.DoAppend(LoggingEvent loggingEvent)
The action that failed was:
LinkDemand
The type of the first permission that failed was:
System.Security.Permissions.SecurityPermission
The Zone of the assembly that failed was:
MyComputer
我打开了SQL事件探查器,但没有任何东西能够进入SQL Server。此外,SQL Server帐户具有执行插入操作的适当权限。此外,我还删除了SecurityContext部分,因为log4net无法识别其中的一部分。使用诸如Process Monitor和spy之类的工具监视IIS进程。我怀疑它试图在IIS帐户无权访问的目录中创建日志文件
在该测试之后,指定您知道IIS进程有权访问的日志文件的绝对路径。您可以通过向应用程序配置文件添加键
log4net.internal.Debug
来启用log4net内部调试
系统。然后,通过向配置文件添加跟踪侦听器,可以将这些消息记录到文本文件中。确保应用程序具有写入文件的权限
以捕获消息。有关更多详细信息,请参阅。是否进入windows资源管理器并检查正确的用户(网络服务?)是否具有写入权限?我终于让它工作了,我补充道
<trust level="Full" />
到system.web
对于medium,AdoNetAppender停止工作,但FileAppender仍然适用于medium和high。我通过更改IIS 7配置解决了这个问题。相当容易
转到应用程序池高级设置并将“加载用户配置文件”设置为true!然后确保IUSR(IIS用户)具有写入日志路径的权限
此外,我通常会添加对32位应用程序的支持,这在您从第三方下载和使用程序集时非常有用,因为您不知道这些程序集是针对32位、64位还是独立的
我通过阅读这篇文章发现了这一点:
致以最良好的祝愿,
Tiago.尝试授予IIS AppPool\DefaultAppPool用户对日志目录的完全权限。这至少帮助了我一次。给予这些iis用户完全的权限
IUSR
IIS_IUSR(PC_名称/IIS_IUSR)
我一直在调查。有点不清楚到底谁拥有这个过程。这不是NETWORKSERVICE,而是仍在试图确定谁拥有AppPoolIdentity进程。不过,我确实给了每个人访问日志目录的权限,但这不起作用。正在下载系统并查看IIS权限。您是否对代码进行了足够的检测,以查看它的位置?将OutputDebugStringAppender和DebugView与(捕获->全局Win32勾选)一起使用。这应该是帮助解决主要问题的最轻松的日志方法。我似乎在w3wp.exe的Process Monitor中找不到文件写入请求。根据process monitor,用户是IIS APPP