c# – Blazor:管理环境特定变量

如何管理客户端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应用程序中引用它.

点赞