gpt4 book ai didi

c# - IdentityModel 中 TokenClient 的问题

转载 作者:行者123 更新时间:2023-11-30 22:57:48 37 4
gpt4 key购买 nike

我有一个使用 IdentityModel 中的 TokenClient 的新 MVC 项目

var tokenClient = new TokenClient(tokenUrl, clientId, CLIENT_SECRET, null, AuthenticationStyle.BasicAuthentication);

我有 IdentityModel 的 nuget 包,一切都可以正常编译。但是,在运行时出现以下错误。

Method not found: 'Void IdentityModel.Client.TokenClient..ctor(System.String, System.String, System.String, System.Net.Http.HttpMessageHandler, IdentityModel.Client.AuthenticationStyle)'.

MVC项目的.NET版本为4.6.1

是什么导致了这个问题?我一直在搜索谷歌,找不到任何有用的东西。我想念的一定是简单的东西。

编辑:

通过显式声明参数来初始化它也不起作用。

var tokenClient = new TokenClient(tokenUrl, clientId: clientId, clientSecret: CLIENT_SECRET);// CLIENT_SECRET, null, AuthenticationStyle.BasicAuthentication);

但是用一个参数初始化它工作正常。

var tokenClient = new TokenClient(tokenUrl);

最佳答案

IdentityModel 是由 Identity Server 的创建者构建的第 3 方库。 v3.10.1 中确实有该方法重载。我已经重新创建了您的错误,您收到错误的原因是 IdentityModel v3.10.1 与 .NET Framework 4.6.1 不兼容。创建者更改了该重载的签名,并将 HttpMessageHandler 设为可选参数,以便您的代码可以编译,但会在运行时抛出此 Method Not Found 错误。您引用的 IdentityModel 项目已被 Identity Server 的人员存档,因此我建议您尽可能进行迁移。

在我看来,您有几个选择:

1) 迁移到 .NET Core 并利用 IdentityModel v2。

2) 将您的项目降级到 .NET Framework 4.5.2(IdentityModel V1 的最后一个兼容版本)

3) 不要使用此重载(因为您已经发现单个 tokenUrl 参数有效)。我会远离这种方法,因为您可能会遇到其他兼容性问题。

基本上,如果您不想迁移到 .NET Core,请将此项目保留在 4.5.2 上。如果可以迁移,请改为迁移。无论如何,Identity Server 正在整体上转向 .NET Core,您现在将通过实现这一飞跃获得更多里程。

关于c# - IdentityModel 中 TokenClient 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53396295/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com