asp.net IO异常错误:IDX20807:无法从以下位置检索文档:'系统.字符串',HttpResponseMessage:

iovurdzv  于 2023-10-21  发布在  .NET
关注(0)|答案(6)|浏览(250)

我正在使用Asp.NetCore3.1和throughChallenge方法,调用外部端点进行身份验证

public async Task<IActionResult> Challenge(string provider, string returnUrl,string userName)
        {
           
                var props = new AuthenticationProperties
                {
                    RedirectUri = Url.Action(nameof(Callback)),
                    Items =
                    {
                        { "returnUrl", returnUrl },
                        { "scheme", provider },
                    },
                    Parameters =
                    {
                        { OidcConstants.AuthorizeRequest.LoginHint, userName }
                    }
                };

                var result = Challenge(props, provider);
                return result;
            }

错误代码:

An unhandled exception occurred while processing the request.
IOException: IDX20807: Unable to retrieve document from: 'System.String'. HttpResponseMessage: 'System.Net.Http.HttpResponseMessage', HttpResponseMessage.Content: 'System.String'.
Microsoft.IdentityModel.Protocols.HttpDocumentRetriever.GetDocumentAsync(string address, CancellationToken cancel)

InvalidOperationException: IDX20803: Unable to obtain configuration from: 'System.String'.
Microsoft.IdentityModel.Protocols.ConfigurationManager<T>.GetConfigurationAsync(CancellationToken cancel)

如何解决这个问题?

v6ylcynt

v6ylcynt1#

当我在Visual Studio 2019中创建一个新的.NET 5项目时,出现了这个异常。

IO异常错误:IDX 20807:无法从以下位置检索文档:'系统.字符串'。HttpResponseMessage:'System.Net.Http. HttpResponseMessage',HttpResponseMessage.内容:'系统.字符串'。Microsoft.IdentityModel.Protocols.HttpDocumentRetriever.GetDocumentAsync(字符串地址,CancellationToken cancel)Microsoft.IdentityModel.Protocols.OpenIdConnect. OpenIdConnectTransferationRetriever.GetAsync(字符串地址,IDocumentRetriever检索器,CancellationToken cancel)Microsoft.IdentityModel.Protocols. TransferationManager. GetTransferationAsync(CancellationToken cancel)
在启动应用程序之前,我得到了这个错误:

所需组件-dotnet msidentity tool
您可以在Connected Services - Service dependencies中修复此问题,并通过按Configure设置Microsoft Identity Platform。

对我来说,它就像这样卡住了,但什么也没发生:

appsettings.json中,我找到了以下代码:

/*
The following identity settings need to be configured
before the project can be successfully executed.
For more info see https://aka.ms/dotnet-template-ms-identity-platform 
*/

访问https://aka.ms/dotnet-template-ms-identity-platform并使用工具msidentity-app-sync代替。开始安装它,然后验证我有安装的工具。

dotnet tool install -g msidentity-app-sync
dotnet tool list -g

然后在projects文件夹中运行msidentity-app-sync。新的App registrations将在Azure Active Directory中创建,项目现在可以工作了。

如果您希望使用现有的应用程序,您也可以自己指定租户和客户端,如下所示:

msidentity-app-sync --tenant-id <tenant-id> --username <username> --client-id <client-id>
sczxawaw

sczxawaw2#

也证实了杜尚的回答。从https://devblogs.microsoft.com/dotnet/jwt-validation-and-authorization-in-asp-net-core/
授权是令牌颁发身份验证服务器的地址。JWT承载认证中间件将使用此URI查找并检索可用于验证令牌签名的公钥。它还将确认令牌中的iss参数与此URI匹配。
我没有使用公共令牌颁发认证服务器。

kqqjbcuj

kqqjbcuj3#

不知道这有多大关系,但有人可能会发现它对处理这个异常很有用。
我正在使用ASP.NET Core 3.1,试图实现JWT身份验证。设置权限后,我开始接收类似的error
问题的Fix正在设置“ValidIssuer”参数,而不是设置Authority。

vq8itlhq

vq8itlhq4#

也许这对你有帮助:我使用了一个来自https://dev.to/moe23/asp-net-core-5-rest-api-authentication-with-jwt-step-by-step-140d的脚手架示例,
在该示例中,引用了Nuget包System.IdentityModel.Tokens.Jwt。我删除了它,因为我不需要它,错误消失了

ttcibm8c

ttcibm8c5#

我们可以通过在Web.config文件中将.NET Framework版本从4.5.2升级到4.7.2来解决上述问题

ndh0cuux

ndh0cuux6#

我从一本书上学到的API中的权限配置错误导致了这个问题。它引导我设置值https://tenant-id.auth0.com,但当创建帐户在auth0。它将我们添加到URL,例如:https://tenant-id.us.auth0.com

相关问题