gpt4 book ai didi

c# - 为客户端 Blazor 部署环境动态配置 Http.BaseAddress

转载 作者:行者123 更新时间:2023-12-03 16:24:08 28 4
gpt4 key购买 nike

在本例中,Hosting Blazor ,作者有一个调用 Azure Functions 的 Blazor ClientSide App。作者设置了一个Http.BaseAddress。关于在以下情况下为本地 URL 配置客户端 Blazor“Http.BaseAddress”的最佳方法的任何想法
Blazor 应用程序部署到 Azure 文件夹时的调试和 Azure Functions URL?

调试:
Http.BaseAddress = new Uri("https://localhost:12345 ");

生产:
Http.BaseAddress = new Uri("https://blazorapi.azurewebsites.net ");

@functions {
Book[] books;
string message;
protected override async Task OnInitAsync()
{
message = "OnInitAsync";
Http.BaseAddress = new Uri("https://blazorapi.azurewebsites.net");
books = await Http.GetJsonAsync<Book[]>("/api/BooksFunction");
message = "downloaded books";
}
}

最佳答案

更新,因为 Blazor 变得更完整:
到目前为止,Blazor 实际上拥有我们从其他 .NET 应用程序中习惯的配置过程,只是多一点...前端-y:
您创建了一个 appsettings.json特殊配置文件,如 appsettings.Release.json .对于 Blazor,您必须将其放入 wwwroot文件夹。
该文件应如下所示:

{
"BaseUrl": "https://localhost:12345"
}
在您的 appsettings.Release.json 中,您可以放置​​ prod url 而不是 localhost。
您现在可以进入 Program.cs 并阅读如下设置:
baseAddress = builder.Configuration.GetValue<string>("BaseUrl");
builder.Services.AddSingleton(new HttpClient
{
BaseAddress = new Uri(baseAddress) }
);
现在所有自动构造的类,如组件,都可以使用 DI 来获取配置的 HttpClient。您只需将其放在顶部:
@inject HttpClient Http
然后从那里使用它。当然,在这里使用您选择的 DI 范围( transient /范围/单例)。
或者,您知道,如果您不想使用 DI,只需将 baseAddress 保存在某处。
这是preview-5,但我们现在使用RC-1更进一步
Blazor 现已投入生产,无需再玩预览版本。

旧答案:
据我所知,目前还没有获得环境的“好”方法,但由于它仅涉及生产与开发,您可以像我一样做同样的事情,只需使用老式的编译器变量:
public class Program
{
internal const string BaseAddress = "http://localhost:81/";
internal const string ProdBaseAddress = "http://localhost:5001/";

public static async Task Main(string[] args)
{
var builder = WebAssemblyHostBuilder.CreateDefault(args);
builder.RootComponents.Add<App>("app");

var host = builder.Build();
var httpClient = host.Services.GetRequiredService<HttpClient>();
#if DEBUG
httpClient.BaseAddress = new Uri(BaseAddress);
#else
httpClient.BaseAddress = new Uri(ProdBaseAddress);
#endif

Console.WriteLine($"Set BaseAddress: {BaseAddress}");
await host.RunAsync();
}
}
只要确保 DEBUG 变量实际上是在你的 Debug 版本中设置的——我的没有。
编辑:忘记了这一点:在本地您可能使用“调试”配置,而在部署时您可能使用不同的配置,例如“发布”。

关于c# - 为客户端 Blazor 部署环境动态配置 Http.BaseAddress,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54378938/

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