我最近升级到了ASP.Net MVC 5,升级后我的代码不再运行。
我正在通过反思当前AppDomain中的类型来执行插件加载。
Assembly[] assemblies = AppDomain.CurrentDomain.GetAssemblies();
IEnumerable<Type> types = assemblies.SelectMany(o => o.GetTypes()).ToList(); // <-- Throws error我得到了Microsoft.Web.Mvc程序集上的错误:
无法加载一个或多个请求类型。检索LoaderExceptions属性以获得更多信息。
在检索加载程序异常时,我得到以下信息:
我知道MVC团队删除了AllowPartialTrustedCallers程序集属性。这是一个彻底的改变,http://www.asp.net/visual-studio/overview/2013/release-notes#knownissues。我的web.config设置为完全信任,但仍然不去。
有什么主意吗?
发布于 2014-05-15 18:25:10
看起来您使用的是一些MVC 4 DLL。
注意,作为副作用,您不能在同一应用程序中使用4.0和5.0程序集。您需要将它们全部更新为5.0。
很可能您需要查看和查看哪些程序集试图作为4个版本加载。
这是一个问题,原因是MVC 4程序集被归因于AllowPartialTrustedCallers,但是MVC 5程序集没有。
因为MVC 5 DLL有一个用于MVC 4 DLL的基类,所以MVC 4 DLL需要对其类具有相同或更多的限制权限。因为它没有(这就是为什么这是一个突破性的改变),安全系统失败。
还要注意,这是一个运行时错误,部分原因是构建的版本没有这个问题(实际上是在一个新的基类中进行交换)。
https://stackoverflow.com/questions/23684965
复制相似问题