Что вызывает «сбой критического типа безопасности доступа System.Web.Http.HttpConfiguration»?

Итак, у меня есть проект ASP.NET MVC/WebAPI 2, ориентированный на .NET framework 4.5.2, и я пытаюсь использовать SimpleInjector (DI) с одним и тем же контейнером для контроллеров MVC и контроллеров WebAPI, и я делал это раньше без проблем .

Во время выполнения, когда я пытаюсь создать экземпляр своего SimpleInjectorWebApiDependencyResolver, я получаю исключение:

public static void Initialize()
{
    var container = new Container();

    InitializeContainer(container);
    container.Verify();
    DependencyResolver.SetResolver(new SimpleInjectorDependencyResolver(container));
    GlobalConfiguration.Configuration.DependencyResolver = new SimpleInjectorWebApiDependencyResolver(container); //Exception thrown here
}

Исключение:

An exception of type 'System.TypeAccessException' occurred in MyAssembly.dll but was not handled in user code

Additional information: Attempt by security transparent method 'System.Web.Http.GlobalConfiguration.get_Configuration()' to access security critical type 'System.Web.Http.HttpConfiguration' failed.

My packages.config:

<?xml version="1.0" encoding="utf-8"?>
<packages>
  <package id="Antlr" version="3.4.1.9004" targetFramework="net452" />
  <package id="bootstrap" version="3.0.0" targetFramework="net452" />
  <package id="jQuery" version="1.10.2" targetFramework="net452" />
  <package id="jQuery.Validation" version="1.11.1" targetFramework="net452" />
  <package id="Microsoft.AspNet.Mvc" version="5.2.3" targetFramework="net452" />
  <package id="Microsoft.AspNet.Razor" version="3.2.3" targetFramework="net452" />
  <package id="Microsoft.AspNet.Web.Optimization" version="1.1.3" targetFramework="net452" />
  <package id="Microsoft.AspNet.WebApi" version="5.2.3" targetFramework="net452" />
  <package id="Microsoft.AspNet.WebApi.Client" version="5.2.3" targetFramework="net452" />
  <package id="Microsoft.AspNet.WebApi.Core" version="5.2.3" targetFramework="net452" />
  <package id="Microsoft.AspNet.WebApi.OData" version="5.7.0" targetFramework="net452" />
  <package id="Microsoft.AspNet.WebApi.Tracing" version="5.2.3" targetFramework="net452" />
  <package id="Microsoft.AspNet.WebApi.WebHost" version="5.2.3" targetFramework="net452" />
  <package id="Microsoft.AspNet.WebPages" version="3.2.3" targetFramework="net452" />
  <package id="Microsoft.CodeDom.Providers.DotNetCompilerPlatform" version="1.0.0" targetFramework="net452" />
  <package id="Microsoft.Data.Edm" version="5.6.2" targetFramework="net452" />
  <package id="Microsoft.Data.OData" version="5.6.2" targetFramework="net452" />
  <package id="Microsoft.Data.Services.Client" version="5.6.2" targetFramework="net452" />
  <package id="Microsoft.IdentityModel.Clients.ActiveDirectory" version="2.19.208020213" targetFramework="net452" />
  <package id="Microsoft.IdentityModel.Protocol.Extensions" version="1.0.0" targetFramework="net452" />
  <package id="Microsoft.jQuery.Unobtrusive.Validation" version="3.2.3" targetFramework="net452" />
  <package id="Microsoft.Net.Compilers" version="1.0.0" targetFramework="net452" developmentDependency="true" />
  <package id="Microsoft.Owin" version="3.0.1" targetFramework="net452" />
  <package id="Microsoft.Owin.Host.SystemWeb" version="3.0.1" targetFramework="net452" />
  <package id="Microsoft.Owin.Security" version="3.0.1" targetFramework="net452" />
  <package id="Microsoft.Owin.Security.Cookies" version="3.0.1" targetFramework="net452" />
  <package id="Microsoft.Owin.Security.OpenIdConnect" version="3.0.1" targetFramework="net452" />
  <package id="Microsoft.Web.Infrastructure" version="1.0.0.0" targetFramework="net452" />
  <package id="Microsoft.WindowsAzure.ConfigurationManager" version="2.0.3" targetFramework="net452" />
  <package id="Modernizr" version="2.6.2" targetFramework="net452" />
  <package id="Newtonsoft.Json" version="6.0.4" targetFramework="net452" />
  <package id="Owin" version="1.0" targetFramework="net452" />
  <package id="Respond" version="1.2.0" targetFramework="net452" />
  <package id="SimpleInjector" version="3.1.1" targetFramework="net452" />
  <package id="SimpleInjector.Extensions.ExecutionContextScoping" version="3.1.1" targetFramework="net452" />
  <package id="SimpleInjector.Integration.Web" version="3.1.1" targetFramework="net452" />
  <package id="SimpleInjector.Integration.Web.Mvc" version="3.1.1" targetFramework="net452" />
  <package id="SimpleInjector.Integration.WebApi" version="3.1.1" targetFramework="net452" />
  <package id="System.IdentityModel.Tokens.Jwt" version="4.0.0" targetFramework="net452" />
  <package id="System.IdentityModel.Tokens.ValidatingIssuerNameRegistry" version="4.5.1" targetFramework="net452" />
  <package id="System.Spatial" version="5.6.2" targetFramework="net452" />
  <package id="WebGrease" version="1.5.2" targetFramework="net452" />
  <package id="WindowsAzure.Storage" version="4.3.0" targetFramework="net452" />
</packages>

Я полностью застрял, насколько я вижу, я ссылаюсь на правильные версии, номера версий верны в элементах DependentAssembly в моем файле web.config, System.Web.Http ссылается на v5.2.3.0, и у меня есть попытался удалить все пакеты, bin, obj и пересобрать.

Я прочитал и попробовал WebAPI OData 5.0 Beta — Access GlobalConfiguration выдает ошибку безопасности и Как устранить ошибку. Попытка с помощью прозрачного метода безопасности "System.Web.Http.GlobalConfiguration.get_Configuration() не увенчалась успехом.

Что вызывает эту ошибку и как я могу ее исправить?


person Marcus    schedule 02.12.2015    source источник
comment
Вы пытаетесь запустить свое приложение с частичным/средним доверием?   -  person Steven    schedule 02.12.2015
comment
Я явно не устанавливал никаких securityPolicy, но по умолчанию полный, не так ли?   -  person Marcus    schedule 02.12.2015
comment
Да, значение по умолчанию заполнено, но исключение «Попытка прозрачным методом безопасности получить доступ к критическому для безопасности типу» заставляет меня думать, что вы работаете с частичным доверием (что больше не поддерживается веб-стеком, кстати). Я не помню, чтобы когда-либо видел такое исключение при работе с полным доверием (но я могу ошибаться).   -  person Steven    schedule 02.12.2015
comment
Знаете ли вы, как я мог установить securityPolicy в частичное по ошибке, кроме добавления элемента в web.config?   -  person Marcus    schedule 02.12.2015
comment
Если его нет в web.config, обычно это конфигурация машины.   -  person Steven    schedule 02.12.2015
comment
Я решил это, но до сих пор я понятия не имею, в чем была исходная проблема. Решение состояло в том, чтобы принудительно переустановить Microsoft.AspNet.WebApi.WebHost, как описано здесь: stackoverflow.com/a/26002407/1376691 Но я бы все равно хотелось бы знать, почему это произошло.   -  person Marcus    schedule 02.12.2015
comment
Для меня это было несоответствие версии пакетов Microsoft.AspNet.WebApi.*, как описано здесь: stackoverflow.com/a/26047141/5413117   -  person S. Robijns    schedule 18.04.2018