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

Cra*_*igt 5 azure azure-functions azure-functions-runtime

我正在编写一个 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 Core Tools (2.0.1-beta.22)
函数运行时版本:2.0.11415.0

Lia*_*iam 20

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

<_FunctionsSkipCleanOutput>true</_FunctionsSkipCleanOutput>
Run Code Online (Sandbox Code Playgroud)

到您的 csproj 文件。如此处记录的


小智 7

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

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

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

由于 Microsoft 软件包依赖于系统软件包,因此它会自动安装。


ubi*_*bie 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"
}
Run Code Online (Sandbox Code Playgroud)