首页 > 解决方案 > TypeError:Blazor webassembly 解决方案中的 FailedToFetch

问题描述

我正在构建一个 Blazor webassembly 应用程序,其中我使用 Microsoft Identity (msal) 调用 webapi。在 localhost 测试环境中运行我的应用程序(和 webapi)时,一切正常。但是,当我从已部署的站点调用 webapi 时,我收到以下错误消息:

TypeError:无法在 Microsoft.AspNetCore.Components.WebAssembly 的 Microsoft.Extensions.Http.Logging.LoggingHttpMessageHandler.SendAsync(HttpRequestMessage 请求,CancellationToken cancelToken) 处获取 System.Net.Http.BrowserHttpHandler.SendAsync(HttpRequestMessage request, CancellationToken cancelToken)。 Microsoft.Extensions.Http.Logging.LoggingScopeHttpMessageHandler.SendAsync(HttpRequestMessage request, CancellationToken cancelToken) 上的 Authentication.AuthorizationMessageHandler.SendAsync(HttpRequestMessage request, CancellationToken cancelToken) System.Net.Http.HttpClient.SendAsyncCore(HttpRequestMessage request, HttpCompletionOption completionOption, Boolean async , Boolean emitTelemetryStartStop, CancellationToken cancelToken) 在 System.Net.Http.Json.HttpClientJsonExtensions.d__9`1[[AgroIT.POC.Scanner.Models.PartModel,AgroIT.POC.Scanner.Blazor,版本=1.0.0.0,文化=中性,PublicKeyToken=null]].MoveNext()

在我的代码中,我在 Blazor 应用程序的 Program.cs 中设置了以下定义:

            builder.Services.AddHttpClient("MyAPI",
            client => {
                client.BaseAddress = new Uri(baseAddress);
            })
            .AddHttpMessageHandler<CustomAuthorizationMessageHandler>();

baseAddress 为我的 localhost 测试填充了“https://localhost:5001”;并为部署的站点填写“https://www.somewebsiteiused.eu/api”。

使用 Fiddler 我发现对已部署站点的请求在 URL中不包含 api。

解决方案:始终在 baseAddress 的末尾添加一个斜杠。因为一旦我将 baseAddress 更改为https://www.somewebsiteiused.eu/api/中的部署站点 (末尾带有斜线)。有效!

标签: c#blazorwebassemblymsalwebapi

解决方案


上述问题也描述了解决方案:始终在 HttpClient 的基地址末尾添加一个斜杠。


推荐阅读