在 Azure 上部署后无法加载文件或程序集“System.IdentityModel.Tokens.Jwt”

Could not load file or assembly 'System.IdentityModel.Tokens.Jwt after deploying on Azure

我的 Web 应用程序在本地主机上运行良好,但是当我在 Azure 上发布它时,出现以下错误:

Could not load file or assembly 'System.IdentityModel.Tokens.Jwt' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)

在本地主机上工作正常。

我正在使用 4.5 框架,它也在 web.config 文件中定义。我试图在 nuget 管理器中重新安装它,但我得到

Package 'System.IdentityModel.Tokens.Jwt.4.0.2.206221351' already exists in project 'project1'

我在引用文件夹中也找不到这个程序集。 这是我第一次遇到此类问题。

你建议我做什么?

此致, 三弟

我想通了。我通过 nuget 包管理器更新了 System.IdentityModel.Tokens.Jwt 参考,它再次工作。

此致!

我不得不将 dot net 框架回滚到 4.5.1

我遇到了同样的问题。我通过在我的安装项目中选择检测到的依赖项的 'Refresh dependencies' 来解决它。我认为这是一个错误,因为 System.IdentityModel.Tokens.Jwt 程序集驻留在程序文件目标文件夹中,并且具有兼容的版本控制。 如果您不使用 VS,也许您可​​以将其与您自己的开发环境相关联。

很容易解决。只需转到网络配置并找到您收到错误的包。并检查 web.config 中提到的版本。并将其与项目中已安装的引用中的 NuGet 包进行比较。并使两者相似。

Nuget Package version

就我而言,我已经安装了 3.10.10.0 并且在网络配置中,它显示了不同。我已将其更改为 3.10.10.0。一切正常。

web.config version

Azure Functions 主机中存在一个已知问题:https://github.com/Azure/azure-functions-host/issues/5894

当前的解决方法是将以下内容添加到您的 .csproj:

<PropertyGroup>
  <_FunctionsSkipCleanOutput>true</_FunctionsSkipCleanOutput>
</PropertyGroup>