我有一个简单的MVC 5 web应用程序运行在ASP.NET 4.6上。在IIS中本地配置的网站可以工作,但是当发布版本并上载到共享宿主环境时,我会收到一个错误:“重写成员时违反了继承安全规则”。
'/‘应用程序中的服务器错误。 重写成员时违反继承安全规则:'SimpleInjector.Integration.Web.Mvc.SimpleInjectorDependencyResolver.GetService(System.Type)'.重写方法的安全可访问性必须与被覆盖的方法的安全可访问性相匹配。 描述:在执行当前web请求时发生了未处理的异常。请查看堆栈跟踪以获得有关错误的更多信息,以及它起源于代码的位置。 异常详细信息:'SimpleInjector.Integration.Web.Mvc.SimpleInjectorDependencyResolver.GetService(System.Type)'.:System.TypeLoadException:重写成员时违反的继承安全规则重写方法的安全可访问性必须与被覆盖的方法的安全可访问性相匹配。 源错误: 在执行当前web请求期间生成一个未处理的异常。有关异常的起源和位置的信息可以使用下面的异常堆栈跟踪来标识。 堆栈跟踪: 'SimpleInjector.Integration.Web.Mvc.SimpleInjectorDependencyResolver.GetService(System.Type)'.:重写成员时违反的继承安全规则:TypeLoadException重写方法的安全可访问性必须与被覆盖的方法的安全可访问性相匹配。
我的理解是MVC web应用程序需要以完全信任的方式运行,但是托管提供商已经表示这是不可能的,并且它们在机器级别上有一个规则集,将应用程序限制为中等信任。
在代码级别上有解决办法吗?我不敢相信要运行一个简单的web应用程序,您需要一个可以配置成具有完全访问权限的专用web服务器框。
是否有另一个IoC容器可以使用而不会导致这种安全冲突?
发布于 2015-12-22 16:21:38
我们忘记用正确的属性标记该类,这将导致此异常。由于微软已经放弃了对ASP.NET web应用程序的部分信任,我们(简单的喷射器贡献者)可能也不会在这方面进行投资。换句话说,不要指望我们(很快)修复这个错误。
要解决这个问题,请实现您自己的SimpleInjectorDependencyResolver。这样做很简单;这只是几行代码,您可以从简单注入器的源代码中复制这些代码。
https://stackoverflow.com/questions/34418477
复制相似问题