gpt4 book ai didi

.net - 无法从 Blazor WebAssembly 应用程序本地访问 Azure Function Api

转载 作者:行者123 更新时间:2023-12-04 01:06:29 24 4
gpt4 key购买 nike

我在 Visual Studio 中有一个 Blazor WebAssembly 项目。我现在刚刚向解决方案添加了一个 Azure Function 项目。我打算将其发布到新的 Azure 静态 Web 应用程序。

我一直遵循此 Microsoft 文档中的说明。

Publish a Blazor WebAssembly app and .NET API with Azure Static Web Apps

根据文档,我只需要使用 launchSettings.json 在本地设置 CORS,然后在 Visual Studio 中同时运行 Api 和客户端项目。然后我应该能够像这样调用 Api。

string test = await Http.GetStringAsync("api/Test");

测试后,字符串变量“test”仅返回以下内容。

<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" /> <title>Client</title> <base href="/" /> <link href="css/bootstrap/bootstrap.min.css" rel="stylesheet" /> <link href="css/app.css" rel="stylesheet" /> <link href="Client.styles.css" rel="stylesheet" /> <link href="manifest.json" rel="manifest" /> <link rel="apple-touch-icon" sizes="512x512" href="icon-512.png" /> </head> <body> <div id="app">Loading...</div> <div id="blazor-error-ui"> An unhandled error has occurred. <a href="" class="reload">Reload</a> <a class="dismiss">🗙</a> </div> <script src="_framework/blazor.webassembly.js"></script> <script>navigator.serviceWorker.register('service-worker.js');</script> </body> </html>

这似乎只是同一页面的 HTML,但带有“发生了未处理的错误”。您通常会在页面底部看到该消息以及“重新加载”链接。然而这并没有发生,我只是获取它的 HTML。很明显出现了问题并且错误没有被显示。

此外,检查浏览器控制台日志没有显示任何错误,这很奇怪。通常,当收到这样的错误时,浏览器日志中会有一些内容。

如果我将代码中的 Api 调用更改为以下内容,那么它就可以正常工作。

string test = await Http.GetStringAsync("http://localhost:7071/api/Test");

显然我不能保持这样,因为在发布到实时站点之前我必须更改每个回调。但是,这表明它正在工作,由于某种原因,客户端在仅使用“api/Test”时无法看到 api。

我在文档中看不到任何我丢失的内容。为什么文档说它应该有效,但它不适合我?我可能会错过什么?

最佳答案

在仔细比较我的代码和 the github repository used by the Microsoft documentation 中的代码之后我发现他们在 Client/wwwroot 文件夹中有一个名为 appsettings.Development.json 的文件,该文件用于向客户端应用程序提供 URL 前缀,以便它可以在本地访问 Api 项目:

enter image description here

{
"API_Prefix": "http://localhost:7071"
}

然后将此前缀添加到 Program.cs 中的 BaseAddress 之前:

builder.Services.AddScoped(sp =>
new HttpClient { BaseAddress = new Uri(builder.Configuration["API_Prefix"] ?? builder.HostEnvironment.BaseAddress) });

令人沮丧的是,文档完全忽略了这一点,并且没有表明这是必要的步骤。

我将其发布在这里,以防其他人遇到同样的问题。

关于.net - 无法从 Blazor WebAssembly 应用程序本地访问 Azure Function Api,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66286744/

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