我们目前在IIS 6中托管了一个asp.net mvc 2网站。在这个应用程序中,我们覆盖了“Create Controler”方法并配置了一个自定义视图引擎。此引擎根据url格式指定视图的位置。例如;如果用户登陆www.asite.com/test/1.0/index.aspx 视图引擎告诉mvc在'sitedirectory / test / 1.0 / views / pages /'目录中查找index.aspx;
string versionDirectory = String.Format("~/{0}/{1}", offerCode, version.ToString("#0.0000"));
ViewLocationFormats = new[]
{
versionDirectory + "/Views/Pages/{0}.aspx",
versionDirectory + "/Views/Pages/{0}.ascx",
"~/Views/Pages/{0}.aspx",
"~/Views/Pages/{0}.ascx",
"~/Shared/Views/{0}.aspx",
"~/Shared/Views/{0}.ascx"
};
MasterLocationFormats = new[]
{
versionDirectory + "/Views/Layouts/{0}.master",
"~/Views/Layouts/{0}.master"
};
PartialViewLocationFormats = ViewLocationFormats;
我们遇到的问题是,当两个或更多用户大致同时登陆网站时, 加载的视图可以切换。但是,为这些视图显示的数据是正确的。
有没有人知道为什么会发生这种情况?
答案 0 :(得分:1)
这是一个(小)已知的问题 - 缓存有问题。
看一下这篇文章: http://www.hanselman.com/blog/ABetterASPNETMVCMobileDeviceCapabilitiesViewEngine.aspx
并完成评论。
我最终实现了直接从IViewEngine派生并在内部使用WebFormsViewEngine的owe视图引擎。