Azure 功能:无法加载文件或程序集 Microsoft.IdentityModel.Tokens,版本 = 5.2.1.0

Posted

技术标签:

【中文标题】Azure 功能:无法加载文件或程序集 Microsoft.IdentityModel.Tokens,版本 = 5.2.1.0【英文标题】:Azure function: Could not load file or assembly Microsoft.IdentityModel.Tokens, Version=5.2.1.0 【发布时间】:2018-07-31 02:43:29 【问题描述】:

我正在编写一个 azure 函数来生成 JWT 令牌并将其返回给客户端。该代码在控制台应用程序中进行了本地测试,似乎一切正常。这是包含在工作控制台应用程序和我的函数应用程序中的包参考:

<PackageReference Include="System.IdentityModel.Tokens.Jwt" Version="5.2.1" />

使用func host start在本地运行功能主机并执行代码时会导致错误:

Could not load file or assembly 'Microsoft.IdentityModel.Tokens, Version=5.2.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'."

我不明白为什么会这样,dll 与我的应用程序 dll 一起位于输出文件夹中。我唯一能想到的另一件事是函数宿主有它自己的一组包,它来自它的来源,而这个还没有可用,仅在 12 天前发布。

我不确定。关于为什么会发生这种情况或如何解决它的任何帮助?

详情: Azure Functions 核心工具 (2.0.1-beta.22) 函数运行时版本:2.0.11415.0

【问题讨论】:

如果有演示代码会更有帮助。 处理请求时发生未处理的异常。 FileLoadException:无法加载文件或程序集“System.IdentityModel.Tokens.Jwt,Version=5.2.1.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35”。 我得到 v.similar ... 在本地工作,推送到 azure 时失败 ... 【参考方案1】:

我能够通过使用旧版本的 nuget 包来解决这个确切的问题。我的出发点是我将一个类文件从一个旧项目复制到一个新项目。类文件引用了 JwtSecurityToken。这在新项目中没有编译,所以我从 nuget 包管理器中添加了 Security.IdentityModel.Tokens.Jwt。我刚刚添加了最新版本。这在本地工作得很好,但就像你一样,它在发布到天蓝色时失败了。然后我查看了旧项目,发现它使用的是 Security.IdentityModel.Tokens.Jwt 的 5.1.4。所以,我降级到了那个版本,现在它在发布后就可以使用了。

fwiw:这是我执行此操作时的 v2 预览运行时版本。

https://<mysite>.azurewebsites.net/admin/host/status?code=<myadminkey>

"id": "<mysite>",
"state": "Running",
"version": "2.0.11587.0",
"versionDetails": "2.0.11587.0-beta1 Commit hash: 1e9e7a8dc8a68a3eff63ee8604926a8d3d1902d6"

【讨论】:

【参考方案2】:

我遇到了这个问题,它似乎与Azure function SDK 中的某种错误有关。解决方法是添加:

<_FunctionsSkipCleanOutput>true</_FunctionsSkipCleanOutput>

到您的 csproj 文件。作为documented here

【讨论】:

【参考方案3】:

我已经安装了这个包Microsoft.AspNetCore.Authentication.JwtBearer

对我来说,问题已经解决了。

你可以卸载System.IdentityModel.Tokens.Jwt

因为微软包依赖系统包,所以会自动安装。

【讨论】:

为我解决了这个问题。我使用的是 .net core 3.1 和 azure function v3

以上是关于Azure 功能:无法加载文件或程序集 Microsoft.IdentityModel.Tokens,版本 = 5.2.1.0的主要内容,如果未能解决你的问题,请参考以下文章

无法加载文件或程序集“Microsoft.WindowsAzure.Storage”Azure 函数

发布到 Azure 网站后无法加载文件或程序集 System.Web.Http.WebHost

无法加载文件或程序集“msshrtmi”或其依赖项之一(Azure 表存储访问)

无法加载文件或程序集“Microsoft.Azure.WebJobs.Host,版本=3.0.22.0

Azure 函数无法加载文件或程序集“System.Security.Cryptography.Pkcs”

错误:将 Function 部署到 Azure 后,无法加载文件或程序集“System.ServiceModel,版本 = 4.0.0.0”