我目前擁有一個.net mvc3應用程序,負責管理多個位置的相似視圖,這些位置也使用相同的控制器,例如site1/v1/views/index.cshtml
和site1/v2/views/index.cshtml
。MVC Razor ViewEngine不是線程安全的?
這種處理方式是通過創建一個繼承自DefaultControllerFactory並在CreateController方法中的CustomControllerFactory,清除現有視圖引擎並添加一個新的自定義viewEngine,該視圖指定基於當前url的視圖位置格式。
如果site1.com/v1/index.cshtml
用戶登陸,視圖引擎將指定的視圖位置:
string versionDirectory = "v1";
ViewLocationFormats = new[]{ versionDirectory + "/Views/{0}.cshtml",
"/Views/{0}.cshtml",
"~/Shared/{0}.cshtml"
};
是我遇到的問題是,如果多個用戶降落在不同的頁面,在大致相同的時間所有用戶將會看到相同的觀點。
Initially i thought this was related to caching,但是在自定義viewEngine中明確設置了usecache = false
之後,看起來這更像是與ViewEngines class not being thread safe有關。
有沒有人有任何關於如何完成同樣的結果,但以不同的方式?
在此先感謝。
不知道你是怎麼做到的,但是所有請求之間共享任何靜態對象 - 這可能與你的問題有關... – Buildstarted