Mvc Проблема обновления от 4 до 5 - как устранить нарушение правил безопасности Autofa c - PullRequest
0 голосов
/ 03 мая 2020

Я обновил свое asp. net веб-приложение (targetFramework 4.5.2) с mvc 4 до 5 согласно этой ссылке . Решение компилируется без ошибок, однако во время выполнения я получаю:

Правила безопасности наследования были нарушены, когда член "Autofa c .Integration. Mvc .AutofacDependencyResolver.GetService (System.Type)" был перезаписан Безопасный доступ для переопределенного метода должен совпадать с безопасным доступом для перезаписанного метода.

Я искал в форуме, но ни одна из связанных публикаций не помогла мне определить причину ошибки. Попытка обновить Autofa c .Mcv4 до 5 (как предлагается в сообщениях) не удалась (-> Autofa c .Mcv5 не нацелена на frameWork 4.5.2). Изменение targetFramework на 4.6 и 4.6.1 также не позволило установить Autofa c .Mcv5.

Ниже я перечислил соответствующие пакеты, установленные в основном проекте:

<packages>
  <package id="Autofac" version="3.5.0" targetFramework="net452" />
  <package id="Autofac.Mvc4" version="3.1.0" targetFramework="net452" />
  <package id="Autofac.WebApi2" version="3.4.0" targetFramework="net452" />
  <package id="Microsoft.AspNet.Mvc" version="5.2.0" targetFramework="net452" />
  <package id="Microsoft.AspNet.Providers.Core" version="1.2" targetFramework="net45" />
  <package id="Microsoft.AspNet.Providers.LocalDB" version="1.1" targetFramework="net45" />
  <package id="Microsoft.AspNet.Razor" version="3.2.7" targetFramework="net452" />
  <package id="Microsoft.AspNet.Web.Optimization" version="1.0.0" targetFramework="net45" />
  <package id="Microsoft.AspNet.WebApi" version="5.2.0" targetFramework="net452" />
  <package id="Microsoft.AspNet.WebApi.Client" version="5.2.0" targetFramework="net452" />
  <package id="Microsoft.AspNet.WebApi.Core" version="5.2.0" targetFramework="net452" />
  <package id="Microsoft.AspNet.WebApi.HelpPage" version="5.2.0" targetFramework="net452" />
  <package id="Microsoft.AspNet.WebApi.OData" version="5.2.0" targetFramework="net452" />
  <package id="Microsoft.AspNet.WebApi.Tracing" version="5.2.0" targetFramework="net452" />
  <package id="Microsoft.AspNet.WebApi.WebHost" version="5.2.0" targetFramework="net452" />
  <package id="Microsoft.AspNet.WebPages" version="3.2.7" targetFramework="net452" />
  <package id="Microsoft.jQuery.Unobtrusive.Ajax" version="2.0.30116.0" targetFramework="net45" />
  <package id="Microsoft.jQuery.Unobtrusive.Validation" version="2.0.30116.0" targetFramework="net45" />
  <package id="Microsoft.Net.Http" version="2.2.29" targetFramework="net452" />
  <package id="Microsoft.Web.Infrastructure" version="1.0.0.0" targetFramework="net45" />
  <package id="Modernizr" version="2.6.2" targetFramework="net45" />
  <package id="Newtonsoft.Json" version="9.0.1" targetFramework="net452" />
  ... and others
</packages>

Также обратите внимание, что решение имеет несколько проектов (два имеют ссылки на Autofa c). Буду признателен за любую помощь, чтобы определить происхождение или устранить ошибку.

Ответы [ 2 ]

1 голос
/ 04 мая 2020

Вы забыли обновить пакет Autofa c .Mvc4 до Autofa c .Mvc5 .

0 голосов
/ 04 мая 2020

Как уже сообщалось в предыдущих постах для Autofa c для работы с mvc5 также необходим Autofa c .mvc5. Однако в моем случае Autofa c .mvc5 отказался от установки, поскольку моя TargetFramwork была 4.5.2. Когда я обновился до 4.6.1, Autofa c .mvc5 все еще отказывался от установки.

Простая причина: в моем решении есть несколько проектов, и для одного я забыл обновить targetFramwork. Теперь Autofa c .mvc5 установлен правильно, ошибка нарушения правил безопасности наследования исчезла, и решение работает правильно.

...