首页 > 解决方案 > ASP.NET Core (Blazor) 在启动时使用 Url 或虚拟路径加载客户特定的配置

问题描述

我们的应用程序(.NET Core 3.1 中的服务器端 Blazor)在 Windows 服务器上的 IIS 中运行。我们在 IIS 中有多个站点,它们运行相同的应用程序,但针对不同的客户使用不同的 URL。

在 (ConfigureServices) 中启动时,我们希望从配置文件中加载应用程序的客户配置。这样,我们可以让应用程序的多个实例以不同的配置运行。从数据库加载此信息不是一个选项,因为配置包含连接到数据库的详细信息。

在 ASP.NET Framework 中,我们可以访问 Global 中的虚拟路径或(子)域名,然后根据该信息加载配置。

我们需要在我们的 ASP.Net Core 应用程序或其他解决方法中具有相同的访问权限。有没有达到相同的结果?

标签: asp.net-coreiisstartupblazor-server-side

解决方案


区分站点的更好方法是通过 URL。IIS中每个站点绑定的域名和端口不再重复。

您可以参考这些代码来获取 startup.cs 中的 URL。

  public void Configure(IApplicationBuilder app, IWebHostEnvironment env,IHostApplicationLifetime lifetime,IServiceProvider serviceProvider)
    {
        ...other code...

        lifetime.ApplicationStarted.Register(
            () => logAddresses(app.ServerFeatures));
    }

  static void logAddresses(IFeatureCollection features)
        {
            var addressFeature = features.Get<IServerAddressesFeature>();
            if (addressFeature != null)
            {
                foreach(var address in addressFeature.Addresses)
                {
                    Console.Out.WriteLine(address);
                }
            }
        }

在此处输入图像描述


推荐阅读