C# 将log4net包含到使用.NET4.0构建的.NETWeb应用程序中
我在网上看到了很多关于这个的帖子,也在stackoverflow中,但是我没有找到任何方法来解决我的问题。我现在已经尝试了3种方法,但都不起作用:C# 将log4net包含到使用.NET4.0构建的.NETWeb应用程序中,c#,asp.net,.net-4.0,log4net,C#,Asp.net,.net 4.0,Log4net,我在网上看到了很多关于这个的帖子,也在stackoverflow中,但是我没有找到任何方法来解决我的问题。我现在已经尝试了3种方法,但都不起作用: 我只是尝试从log4net zip文件夹中获取log4net.dll,其中包含bin目录中的所有源代码结果:没有编译错误,但我的SmtpAppender不会发送错误电子邮件 所以,我从网上搜索发现它可能与log4net.dll编译的版本有关。这是wierd,但无论如何,我遇到了一个错误,他要求我为程序集生成一个强键,这就是我所做的和编译的,所以我发布
protected void Application_Start(object sender, EventArgs e) {
log4net.Config.XmlConfigurator.Configure();
}
错误如下:(参见参考文献1)其他信息(审查#1) 我刚试过别的东西。我已经打开了使用VS.net 2010转换的log4net应用程序的完整.sln,添加了一个看起来与我的应用程序完全相同的web项目,但在本例中,我能够调试log4net库。以下是它失败的地方:
// If we could not find an alias
if (rep == null)
{
LogLog.Debug("DefaultRepositorySelector: Creating repository [" + repositoryName + "] using type [" + repositoryType + "]");
// Call the no arg constructor for the repositoryType
HERE -> rep = (ILoggerRepository)Activator.CreateInstance(repositoryType); <-- HERE
[...]
}
//如果找不到别名
if(rep==null)
{
调试(“DefaultRepositorySelector:使用类型[“+repositoryType+”]”创建存储库[“+repositoryName+”];
//调用repositoryType的无参数构造函数
这里->rep=(ILoggerRepository)Activator.CreateInstance(repositoryType);找到它!!我读了这篇文章,它只是简单地解决了它
在我的第一篇帖子(问题)中,在我尝试的步骤3中,它说要替换AssemblyInfo.cs中的某些内容:
他说:“在AssemblyInfo.cs中,将部分安全性的部分修改为如下所示:
这不好!!您必须删除“!NET\u 4\u 0”并用以下行替换[assembly]:
[assembly: System.Security.SecurityRules(System.Security.SecurityRuleSet.Level1)]
SMTPAppender和FileAppender现在对我来说都可以正常工作了!在部分信任4.0网站下使用log4net v1.2.11仍然会收到此错误消息,例如:
<system.web>
<trust level="Medium" />
如果不需要部分信任,则将其更改为:
<system.web>
<trust level="Full" />
停止错误。请注意,我没有忘记将以前放入的所有内容都放入web.config.Debug(和/或发行版)中.但是,它会错过一些东西吗?如果我们使用.net 3,Web.Config会有很大的不同。*如果您使用更简单的文件追加器,日志记录会起作用吗?是的,文件追加器会引发相同的错误。但是请看我的主要帖子,我刚刚得到一些信息。版本1.2.11支持.net 4…谢谢Stephan。你说得对,Log4net现在支持.net 4。但是我刚发布的时候,它就不是了。不过多亏了指定!(:Hey Will!“ol'friend”,没那么多,你知道我还年轻;o)
<system.web>
<trust level="Full" />