TypeError:Blazor webassembly 解决方案中的 FailedToFetch

Posted

技术标签:

【中文标题】TypeError:Blazor webassembly 解决方案中的 FailedToFetch【英文标题】:TypeError: FailedToFetch in Blazor webassembly solution 【发布时间】:2021-06-23 06:59:14 【问题描述】:

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

TypeError: 获取失败 在 System.Net.Http.BrowserHttpHandler.SendAsync(HttpRequestMessage 请求,CancellationToken cancelToken) 在 Microsoft.Extensions.Http.Logging.LoggingHttpMessageHandler.SendAsync(HttpRequestMessage 请求,CancellationToken 取消令牌) 在 Microsoft.AspNetCore.Components.WebAssembly.Authentication.AuthorizationMessageHandler.SendAsync(HttpRequestMessage 请求,CancellationToken cancelToken) 在 Microsoft.Extensions.Http.Logging.LoggingScopeHttpMessageHandler.SendAsync(HttpRequestMessage 请求,CancellationToken 取消令牌) 在 System.Net.Http.HttpClient.SendAsyncCore(HttpRequestMessage 请求,HttpCompletionOption 完成选项,布尔异步,布尔 emitTelemetryStartStop,CancellationToken 取消令牌) 在 System.Net.Http.Json.HttpClientJsonExtensions.d__9`1[[AgroIT.POC.Scanner.Models.PartModel,AgroIT.POC.Scanner.Blazor,版本=1.0.0.0,文化=中性,PublicKeyToken=null]]。移动下一个()

在我的代码中,我在 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/ 中的已部署站点(末尾带有斜线)。成功了!

【问题讨论】:

【参考方案1】:

上面的问题也描述了解决方法:总是在HttpClient的基地址末尾加一个斜线。

【讨论】:

将“解决方案”部分移至此答案。现在是一团糟。

以上是关于TypeError:Blazor webassembly 解决方案中的 FailedToFetch的主要内容,如果未能解决你的问题,请参考以下文章

Blazor TypeError:无法在 Object.e 处读取 null 的属性“removeChild”[作为 removeLogicalChild]

.Net 6 - 用于 blazor 的 UseCors

Blazor University 介绍 - 什么是 Blazor?

WTM Blazor,Blazor开发利器

Blazor学习之旅初步了解Blazor

Blazor 应用程序 /_blazor/disconnect 状态码 400