Ответ 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;
}
}
Надеюсь, это немного облегчит вам:)