У меня есть основное веб-приложение asp.net, которое использует модуль PowerShell MSOnline
для взаимодействия с Office 365. Когда командлет Connect-MsolService
выполняется для аутентификации в Office 365, я получаю следующую ошибку.
Не удалось загрузить тип 'System.IdentityModel.Tokens.JwtSecurityToken' из сборки 'System.IdentityModel.Tokens.Jwt, версия = 5.1.5.0, культура = нейтральная, PublicKeyToken = 31bf3856ad364e35'.
При выполнении той же логики в другом проекте через модульное тестирование я не получаю сообщение об ошибке, код выполняется так, как ожидалось.И тестовый проект, и веб-проект используют одну и ту же версию (5.1.5) сборки System.IdentityModel.Tokens.Jwt
, поэтому я не понимаю, почему я получаю эту ошибку, когда эта логика выполняется в веб-приложении.
Я читал, что решением является снижение версии до * 4 сборки System.IdentityModel.Tokens.Jwt
, но я знаю, что она работает с 5.1.5, потому что мои тесты проходят.Кроме того, это не вариант для меня, потому что для некоторых сборок aspnetcore требуется v5.Кто-нибудь понимает, почему это происходит в основном веб-приложении asp.net, или знает решение, которое не требует понижения сборки?
Обновление:
Похожекак мое перенаправление привязки вызывает проблему.Если я добавлю следующее в файл app.config в моем тестовом проекте, это приведет к ошибке.Это очень странно, потому что 5.1.5 - это версия System.IdentityModel.Tokens.Jwt
, на которую ссылаются, как будто по умолчанию используется другая версия.
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.IdentityModel.Tokens.Jwt" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-5.4.0.0" newVersion="5.1.5.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>