У меня есть простое веб-приложение MVC 5, работающее на ASP.NET 4.6. Сайт, когда локально настроен в IIS работает, однако, когда сборка выпуска публикуется и загружен в среде виртуального хостинга, я получаю ошибку «Наследование правила безопасности нарушены, а перекрывая элемент»Веб-сайт MVC в среде общедоступного хостинга с ограниченным доверием
Server Error in '/' Application.
Inheritance security rules violated while overriding member: 'SimpleInjector.Integration.Web.Mvc.SimpleInjectorDependencyResolver.GetService(System.Type)'. Security accessibility of the overriding method must match the security accessibility of the method being overriden.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.TypeLoadException: Inheritance security rules violated while overriding member: 'SimpleInjector.Integration.Web.Mvc.SimpleInjectorDependencyResolver.GetService(System.Type)'. Security accessibility of the overriding method must match the security accessibility of the method being overriden.
Source Error:
An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.
Stack Trace:
[TypeLoadException: Inheritance security rules violated while overriding member: 'SimpleInjector.Integration.Web.Mvc.SimpleInjectorDependencyResolver.GetService(System.Type)'. Security accessibility of the overriding method must match the security accessibility of the method being overriden.]
Я понимаю, что веб-приложения MVC необходимо запустить с полным доверием, но хостинг-провайдер указал, что это невозможно, и что у них есть правило, установленное на уровне машины, что ограничивает приложения средним уровнем доверия.
Есть ли обходной путь для этого на уровне кода, я не могу поверить, что для запуска простого веб-приложения вам понадобится выделенный веб-сервер, который может быть настроен на полный доступ.
Есть ли другой контейнер IoC, который может использоваться, который не вызывает конфликта безопасности?
Начиная с .NET 4.0, Microsoft [устарела поддержка частичного доверия] (https://stackoverflow.com/a/17218344/264697) в ASP.NET. Поэтому, даже если вы запустите Simple Injector, вы можете столкнуться с трудностями в ближайшее время, так как Microsoft не будет исправлять какие-либо частичные проблемы доверия, а недавно разработанная логика не будет протестирована для частичного доверия. Как вы можете прочитать в этой ссылке, ваш хостинг-провайдер должен * не * работать в частичном доверии. – Steven
Другими словами, если ваш хостинг-провайдер не предлагает полного доверия, пришло время искать нового хостинг-провайдера (или, возможно, перейти на виртуальный частный сервер, где вы можете сами контролировать эти настройки). – NightOwl888