我在asp.net mvc 5应用程序(测试应用程序,非常基本)中有这种非常奇怪的行为。
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 */
}
我在global.asax.cs中使用SingleProfile属性一次,这会创建一个配置文件。但是在请求中, profiles 字段似乎已重新初始化,因此它变为空。
我正在使用IIS express在VS中运行应用程序。我在不同的解决方案中移动应用程序后,此行为开始。我不认为它有什么可做的,但奇怪的是,它在移动它之前应该有效。
为什么会出现这种情况?这就像包含类的程序集在应用程序启动时加载一次,然后丢弃然后再次加载到另一个请求中。简而言之, static 不再是静态。
编辑:我在个人资料上设置了一个断点,它会点击两次:一次是global.asax.cs,另一次是第一次请求
答案 0 :(得分:0)
好的,我解决了它:我必须手动删除每个项目的/ bin文件夹中的所有内容,然后重新加载解决方案。无论出于何种原因,它似乎都使用了旧的和新的程序集,可能它使用了一个用于global.asax而另一个用于请求。