У меня очень странное поведение в приложении asp.net mvc 5 (тестовое приложение, очень простое).Статическое поле получает reinitialized по каждому запросу
public class MvcConventions
{
static Dictionary<string,MvcConventions> profiles=new Dictionary<string, MvcConventions>(1);
public static MvcConventions CreateProfile(string profile)
{
if (!profiles.ContainsKey(profile))
{
profiles[profile]=new MvcConventions();
}
return profiles[profile];
}
public static MvcConventions SingleProfile
{
get
{
return CreateProfile("default");
}
}
/* removed ohter stuff */
}
Я использую свойство SingleProfile один раз в global.asax.cs, который создает профиль. Но затем внутри запроса профили поле, похоже, повторно инициализировано, поэтому оно становится пустым.
Я запускаю приложение только в VS, используя IIS express. Такое поведение началось после того, как я переместил приложение в другом решении. Я не думаю, что это что-то делать, но странно, что он работал так, как нужно, прежде чем перемещать его.
Почему такое поведение происходит? Это похоже на то, что сборка, содержащая класс, загружается один раз, когда приложение запускается, а затем отбрасывается, а затем снова загружается в другой запрос. Проще говоря, статические больше не статические.
Edit: Я поставил точку останова на профилей и она попадает дважды: один раз для Global.asax.cs и другой для первого запроса