Я обновляю старый проект, чтобы использовать .net 471 вместо 462 и самую последнюю версию всех пакетов nuget.
У меня было много проблем с версиями, которые нужно было вспахать, но я наконец-тополучил проект, который строит.
Но, когда я выполняю программирование, я получаю следующее исключение:
System.TypeAccessException: 'Попытка прозрачным методом безопасности' Autofac.Integration.WebApi.RegistrationExtensions.RegisterApiControllers (Autofac.ContainerBuilder, System.Reflection.Assembly []) 'для доступа к критическому типу безопасности' Autofac.Builder.IRegistrationBuilder`3 'не удалось.
С последующим
Сборка 'Autofac.Integration.WebApi, версия = 3.0.0.0, Culture = нейтральная, PublicKeyToken = 17863af14b0044da' помечена атрибутом AllowPartiallyTrustedCallersAttribute и использует модель прозрачности безопасности уровня 2.Прозрачность уровня 2 приводит к тому, что все методы в сборках AllowPartiallyTrustedCallers становятся прозрачными для безопасности по умолчанию, что может быть причиной этого исключения. '
Это происходит при вызове:
builder.RegisterApiControllers(ThisAssembly);
Гдестроитель - это Autofac ContainerBuilder
.
Вопрос
Как говорит субъект, должен быть какой-то конфликт между SecurityCritical
и AllowPartiallyTrustedCallersAttribute
, но я неЯ не знаю, как я это представил, и каково лучшее действие, поэтому
Что происходит и как я могу это исправить?
Обновление
Продолжая предложение JLe, я удалил ссылку webapi
и вместо нее использовал webapi2
.Я получил связанную ошибку при настройке регистрации, но поскольку это не «основная функциональность», я пока ее пропустил (мне нужно вернуться к ней), чтобы посмотреть, что я получу.Я попадаю на экран браузера, который дает мне следующее:
Метод 'my.namespace.MyController + d__6.MoveNext ()' прозрачен для безопасности, но является членом критического типа безопасности.
Я попытался поместить [SecurityCritical]
в класс контроллера, но, очевидно, вам не разрешено делать асинхронные вызовы в классе с этим атрибутом:
Ошибка CS4031 Асинхронные методыне допускаются в интерфейсе, классе или структуре, которые имеют атрибут «SecurityCritical» или «SecuritySafeCritical».
Но я не могу исправить , потому что явыполнение асинхронных вызовов к бэкэнду (NServicebus ESB).