我目前有一个 .net mvc3 应用程序,负责管理多个位置的类似视图,这些视图也使用相同的控制器,例如site1/v1/views/index.cshtml
和site1/v2/views/index.cshtml
.
处理这种情况的方法是创建一个继承自 DefaultControllerFactory 的 CustomControllerFactory,并在 CreateController 方法中清除现有的视图引擎并添加一个新的自定义 viewEngine,它根据当前 url 指定视图位置格式。
如果用户登陆site1.com/v1/index.cshtml
,视图引擎将指定 的视图位置:
string versionDirectory = "v1";
ViewLocationFormats = new[]{ versionDirectory + "/Views/{0}.cshtml",
"/Views/{0}.cshtml",
"~/Shared/{0}.cshtml"
};
我遇到的问题是,如果多个用户大致同时登陆不同的页面,所有用户都会看到相同的视图。
最初我认为这与缓存有关,但在自定义 viewEngine 中明确设置后usecache = false
,似乎这与ViewEngines 类不是线程安全有关。
有没有人对我如何以不同的方式完成相同的结果有任何想法?
提前致谢。