我试图继承一个基础 global.asax 类来创建我的自定义 global.asax 类。但是我的客户继承的全局类不能正常工作。它的 Application_Start 不会被调用。

有人知道乳清吗?

public class BaseGlobal : HttpApplication
{
    protected void Application_Start(Object sender, EventArgs e)
    {
        log4net.Config.XmlConfigurator.Configure();
        Logger.Warn("Portal Started");  //I can find it log file
    }
    ......
}


public class MyGlobal : BaseGlobal
{
        new protected void Application_Start(Object sender, EventArgs e)
        {
            base.Application_Start(sender,e);

            Logger.Warn("Portal Started 2"); // Can not find it in log file
        }
}


<%@ Application Codebehind="Global.asax.cs" Inherits="Membership_ABC.MyGlobal" Language="C#" %>

在日志文件中,我找不到“Portal started 2”,而只是“Portal Started”。

有任何想法吗?

最佳答案

解决方法是在基类中声明函数virtual,然后在子类中覆盖它。

但是由于您无法编辑基类来声明 Application_Start 方法为虚拟,因此它不起作用:
Is it possible to override a non-virtual method?

接受的答案给出了一个与您的情况相匹配的示例。

关于c# - 继承 Global.asax 和 Application_Start 问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13605230/

10-13 08:31