Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/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
Visual studio 2008 log4net-附录不在IIS7.5中工作_Visual Studio 2008_Iis_Windows 7_Asp.net 3.5_Log4net - Fatal编程技术网

Visual studio 2008 log4net-附录不在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=

我能够使用log4net和Cassini/iisdev服务器写入日志文件,但当我使用IIS7.5时,我无法写入文件

最初,我得到了一个安全异常,因此我添加了
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