代码之家  ›  专栏  ›  技术社区  ›  Simon Dugré Metin Atalay

将log4net包含到使用.NET4.0构建的.NETWeb应用程序中

  •  2
  • Simon Dugré Metin Atalay  · 技术社区  · 14 年前

    我看到网上有很多关于这个的帖子,也有stackoverflow,但是我没有找到任何方法来解决我的问题。我试过三种方法,但都不管用:

    1. 我只是尝试从log4net zip文件夹中获取log4net.dll,其中包含bin目录中的所有源代码。 结果 :没有编译错误,但我的SmtpAppender只是不发送错误电子邮件。
    2. 所以,我在网上搜索了一下 可以 与log4net.dll编译的版本相关。这是wierd,但无论如何,我遇到了一个错误,他要求我为程序集生成一个强键,这就是我所做的和编译的,所以我发布了这个项目,并采取log4net.dll,并添加到我的projet的refereces。 结果 :尝试从Global.asax行配置时,没有编译错误,但有1个错误:

      protected void Application_Start(object sender, EventArgs e) {
          log4net.Config.XmlConfigurator.Configure();
      }
      

    3. 所以,再一次,我从一个艾哈迈德·福阿德那里找到了这条线索,据我所说,他希望工作正常。 Here's the thread

    有没有人成功地使用framework4.0将SmtpAppender配置成C#VS.net Web应用程序?

    参考文献1


    附加信息(回顾#1)

    我刚试过别的东西。我已经打开了使用VS.NET2010转换的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
    
        [...]
    }
    
    2 回复  |  直到 12 年前
        1
  •  5
  •   Community    7 年前

    找到它!!我读过这篇文章 Log4Net and .NET 4.0 RC

    在我的第一篇文章(问题)中,在我尝试的步骤3中,它说要替换AssemblyInfo.cs中的某些内容:

    他说:“在AssemblyInfo.cs中,对部分安全性的部分进行了如下修改:”

      (#)if (!NETCF && !NET_4_0)
      //
      // If log4net is strongly named it still allows partially trusted callers
      //
      [assembly: System.Security.AllowPartiallyTrustedCallers]
      (#)endif
    

    不好!!必须删除“!将[assembly]替换为以下行:

      [assembly: System.Security.SecurityRules(System.Security.SecurityRuleSet.Level1)]
    

    SMTPAppender和FileAppender现在对我来说都很好!

        2
  •  4
  •   Andy Cook    12 年前

    <system.web>
        <trust level="Medium" />
    

    如果不需要部分信任,请将此更改为:

    <system.web>
        <trust level="Full" />
    

    停止错误。