【问题标题】:Exception occuring in ASP.Net MVC app with Log4net on Shared Hosting在共享主机上使用 Log4net 的 ASP.Net MVC 应用程序中发生异常
【发布时间】:2011-04-12 05:48:45
【问题描述】:

我有一个使用 ASP.Net MVC 开发的网站,并使用 Log4net 进行异常记录。该网站运行良好,直到大约 4 小时前。在过去 2 周内,我们没有对网站进行任何更改。该网站自我们在大约 1 个月前建立以来一直运行顺利。该网站由我们的 ISP 托管在共享主机帐户上。

这是我们收到的例外情况:

[FormatException: String was not recognized as a valid Boolean.]
   log4net.Core.LoggerManager.RegisterAppDomainEvents() +0
   log4net.Core.LoggerManager..cctor() +33

[TypeInitializationException: The type initializer for 'log4net.Core.LoggerManager' threw an exception.]
   log4net.Core.LoggerManager.GetLogger(Assembly repositoryAssembly, String name) +0
   log4net.LogManager.GetLogger(Assembly repositoryAssembly, String name) +8
   log4net.LogManager.GetLogger(String name) +20
   i3t.LcaWeb.View.MvcApplication..cctor() in Global.asax.cs:17

[TypeInitializationException: The type initializer for 'i3t.LcaWeb.View.MvcApplication' threw an exception.]
   i3t.LcaWeb.View.MvcApplication..ctor() +0
   ASP.global_asax..ctor() in App_global.asax.fqjmwqjv.0.cs:0

[TargetInvocationException: Exception has been thrown by the target of an invocation.]
   System.RuntimeTypeHandle.CreateInstance(RuntimeType type, Boolean publicOnly, Boolean noCheck, Boolean& canBeCached, RuntimeMethodHandle& ctor, Boolean& bNeedSecurityCheck) +0
   System.RuntimeType.CreateInstanceSlow(Boolean publicOnly, Boolean fillCache) +86
   System.RuntimeType.CreateInstanceImpl(Boolean publicOnly, Boolean skipVisibilityChecks, Boolean fillCache) +230
   System.Activator.CreateInstance(Type type, Boolean nonPublic) +67
   System.RuntimeType.CreateInstanceImpl(BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes) +1051
   System.Activator.CreateInstance(Type type, BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes) +111
   System.Web.HttpApplicationFactory.GetSpecialApplicationInstance(IntPtr appContext, HttpContext context) +215
   System.Web.HttpApplicationFactory.FireApplicationOnStart(HttpContext context) +8878568
   System.Web.HttpApplicationFactory.EnsureAppStartCalled(HttpContext context) +136
   System.Web.HttpApplicationFactory.GetApplicationInstance(HttpContext context) +92
   System.Web.HttpRuntime.ProcessRequestInternal(HttpWorkerRequest wr) +289

在 Global.asax 中引发了异常,其中正在创建 log4net.ILog 的实例:

public class MvcApplication : System.Web.HttpApplication
{
    private static log4net.ILog log = log4net.LogManager.GetLogger("global.asax");

    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.MapRoute(
            "Home.aspx",
            "",
            new { action = "Index", controller = "Home" }
        );

测试中没有出现问题 - 我们无法重现它。我已经删除了现场网站上的所有文件,并重新上传了它们,以防万一有东西损坏了,但这并没有解决问题。

我相信 ISP 方面可能发生了一些变化,从而破坏了某些东西。

关于如何解决这个问题的任何线索?

【问题讨论】:

    标签: asp.net-mvc exception log4net shared-hosting yellow-screen-of-death


    【解决方案1】:

    LogManager.GetLogger() 需要用于记录的类的名称,而不是文件名 Global.asax。请仅使用“Global”作为 LogManager.GetLogger() 的参数。

    【讨论】:

    • GetLogger() 为记录器取一个名字。传递类名是常见的用法,但根本不是强制性的。另外,如果是这样,当类命名为 MvcApplication 时,为什么您建议传递“全局”?
    【解决方案2】:

    我遇到了类似的问题。在我的情况下,我不小心在 Web.config 中填写了一个布尔字段,因为它不是布尔值。

    例如,我的 Web.config 中有这个:

    <appender name="XYLogger" type="log4net.Appender.RollingFileAppender">
        <file value="App_Data\logging\xymaps.log" />
        <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
        <appendToFile value="some-file-name"/>
        <rollingStyle value="Size" />
        <maxSizeRollBackups value="2" />
        <maximumFileSize value="2MB" />
        <staticLogFileName value="true" />
        <layout type="log4net.Layout.PatternLayout">
            <param name="ConversionPattern" value="%d [%t] %-tp %c %m%n" />
        </layout>
    </appender>
    

    我将&lt;appendToFile&gt; 误认为是指定记录器应附加到的文件名的标记。相反,它应该是&lt;appendToFile value="true" /&gt;。因此,如果其他人遇到此问题,我建议他们仔细检查其 Web.config 中是否存在值不正确的布尔字段。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-03-05
      • 2016-12-13
      • 1970-01-01
      • 2011-01-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多