如何管理客户端blazor环境中不同的访问变量?通常,因为我使用Azure来发布应用程序,所以我将appsettings.json文件用于本地应用程序设置,然后在App Service的Azure Application Settings部分中设置条目,以获取本地环境和其他环境之间不同的条目.
我想要完成的一个例子:
客户端Blazor:
@functions {
//...more code here
await Http.PostJsonAsync<object>("http://localhost:50466/api/auth/register", vm);
}
在部署的Web服务器上,这应该转换为:
@functions {
//...more code here
await Http.PostJsonAsync<object>("http://wwww.mywebsite.com/api/auth/register", vm);
}
所以我正在寻找一种方法来将站点根URL存储在环境变量中,并在发布时对其进行转换. Blazor-ey有没有办法做到这一点?
最佳答案 有多种方法可以做到这一点,
I believe there is no any official method documented yet!
我的建议是使用好的旧方法,为不同的环境使用多个配置文件,并仅复制要在预期的环境中使用的配置文件.
在解决方案文件夹中创建一个名为env的文件夹.并创建名为dev和prod的子文件夹.如下.
|- env
|- dev
|- prod
|
将您的不同配置文件(具有相同名称和不同配置的文件)放在dev和prod文件夹中.
创建批处理文件以将appropreate环境复制到wwwroot文件夹. (我比下一步更喜欢这个,这对CI很友好,不需要在构建服务器中安装Visual Studio)
要么
将以下代码添加到Blazor项目的post-build事件中
if $(ConfigurationName) == Debug (
copy /Y "$(ProjectDir)env\dev\*" "$(TargetDir)\wwwroot"
) ELSE (
copy /Y "$(ProjectDir)env\prod\*" "$(TargetDir)\wwwroot"
)
由于您的配置文件位于www文件夹中,因此您可以通过打开文件并阅读其中的内容来轻松地从blazor应用程序中引用它.