c# - 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/中的部署站点 (末尾带有斜线)。有效!
解决方案
上述问题也描述了解决方案:始终在 HttpClient 的基地址末尾添加一个斜杠。
推荐阅读
- jspdf - 如何在jspdf中以粗体显示文本?
- python - 获取 k 个排序数组的交集的最有效方法是什么?
- asp.net-core - 从下拉列表中获取选定的值
- android - 尝试实现 CameraX 时,应用程序崩溃
- r - R:根据环境列表动态写入JSON
- c - Tensorflow C API - 输入张量问题
- python - 美丽的汤返回无
- javascript - 在javascript中通过字符串从数组中的项目中检索属性
- apache-spark - 使用 Spark 2.4 与 Spark 3 读取多个 JSON 文件
- javascript - 如果您第一次在提示符中键入“yes”而不是第二次,Javascript 中的函数只会中断 while 循环