Подтвердить что ты не робот

Когда метод AppInitialize вызывается в ASP.NET?

Во время практики настройки VirtualPathProvider я обнаружил, что пользовательский VirtualPathProvider может быть зарегистрирован в Global.asax или в методе AppInitialize в соответствии с MSDN http://msdn.microsoft.com/en-us/library/system.web.hosting.virtualpathprovider.aspx. Однако MSDN не описывает метод AppInitialize.

Будет ли какой-либо статический метод AppInitialize в папке App_code автоматически запускаться во время запуска ASP.NET?

4b9b3361

Ответ 1

Несмотря на то, что есть неплохая документация о методе AppInitialize(), вы правы в своем предположении, что любой класс в вашей папке App_Code, содержащий такую ​​подпись метода, как это:

public static void AppInitialize()

будет вызываться при запуске приложения Asp.Net. Помните, что App_Code - это специальная папка для Asp.Net, и все внутри там обрабатывается немного по-другому. Удачи в поиске документации по всем маленьким причудам (например, упомянутым выше) в папке App_Code.

Еще одна вещь, которую следует помнить, заключается в том, что только один класс может содержать подпись для метода AppInitialize(), иначе вы получите ошибку компилятора во время выполнения, подобную этому:

Определяется метод AppInitialize как в "App_Code.SomeClassOne", так и в 'App_Code.SomeClassTwo'.

Итак, хотя это совершенно верно:

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;
    } 
}

Надеюсь, это немного облегчит вам:)