현재 여러 위치에서 동일한 컨트롤러 (예 : site1/v1/views/index.cshtml
및 site1/v2/views/index.cshtml
)를 사용하는 유사한보기를 관리하는 .net mvc3 응용 프로그램이 있습니다.MVC Razor ViewEngine은 스레드로부터 안전하지 않습니까?
이 처리 방법은 DefaultControllerFactory 및 CreateController 메서드를 상속하는 CustomControllerFactory를 만들어 기존 뷰 엔진을 지우고 현재 URL을 기반으로하는 뷰 위치 형식을 지정하는 새 사용자 지정 viewEngine을 추가하는 것입니다.
site1.com/v1/index.cshtml
의 사용자 토지의 viewengine이의 뷰 위치를 지정하는 경우 : 나는 데
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