代码之家  ›  专栏  ›  技术社区  ›  Morgan Cheng

在ASP.NET中何时调用AppInitialize方法?

  •  19
  • Morgan Cheng  · 技术社区  · 16 年前

    在定制virtualpathprovider的实践中,我发现定制virtualpathprovider可以根据msdn在global.asax或appinitialize方法中注册。 http://msdn.microsoft.com/en-us/library/system.web.hosting.virtualpathprovider.aspx . 但是,msdn并没有清晰地描述方法的应用化。

    启动时,ASP.NET运行时是否会自动调用app_code文件夹中的任何静态AppInitialize方法?

    1 回复  |  直到 13 年前
        1
  •  33
  •   Josh    16 年前

    虽然关于appInitialize()方法的文档很少,但您的假设是正确的,即app_code文件夹中包含如下方法签名的任何类:

    public static void AppInitialize()
    

    将在ASP.NET应用程序启动时调用。记住,应用程序代码是ASP.NET的一个特殊文件夹,其中的所有内容都会得到不同的处理。祝你好运,找到应用程序代码文件夹中所有小怪癖(如前面提到的)的文档。

    但是,要记住的另一件事是,只有一个类可以包含appinitialize()方法的签名,否则在运行时会出现类似这样的编译器错误:

    定义了AppInitialize方法 在“app-code.someClassOne”和 “应用程序代码。SomeClass2”。

    因此,尽管这是完全有效的:

    public class SomeClassOne
    {
        public static void AppInitialize()
        {
            HostingEnvironment.Cache["InitializationTimeOne"] = DateTime.Now;
        } 
    }
    

    这将生成我上面提到的编译器错误:

    public class SomeClassOne
    {
        public static void AppInitialize()
        {
            HostingEnvironment.Cache["InitializationTimeOne"] = DateTime.Now;
        } 
    }
    
    public class SomeClassTwo
    {
        public static void AppInitialize()
        {
            HostingEnvironment.Cache["InitializationTimeTwo"] = DateTime.Now;
        } 
    }
    

    我希望这能帮你解决一些问题。)