首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ASP.NET核心(Blazor)通过使用Url或虚拟路径在启动时加载客户特定的配置

问ASP.NET核心(Blazor)通过使用Url或虚拟路径在启动时加载客户特定的配置
EN

Stack Overflow用户
提问于 2020-11-09 23:26:13
回答 2查看 149关注 0票数 0

我们的应用程序(WindowsCore3.1中的服务器端Blazor )在.NET服务器上的IIS中运行。我们在IIS中有多个站点运行相同的应用程序,但对于不同的客户具有不同的URL。

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

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

我们需要在我们的ASP.Net核心应用程序中使用相同的访问权限,或者另一种解决方法。有没有什么方法可以达到同样的效果呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-11-20 15:59:01

我能够从环境中获取应用程序池ID,然后加载配置部分作为应用程序配置:

代码语言:javascript
复制
var appPool = Environment.GetEnvironmentVariable( "APP_POOL_ID", EnvironmentVariableTarget.Process )
van sectionname = SomeMagicToParseAppPool( appPool );            
var config = Configuration.GetSection( sectionName );
if ( config == null ) throw new ApplicationException($" Cannot find config section for {host}");
services.Configure<ApplicationSettings>( config );

这允许我为不同的站点加载不同的配置。唯一的缺点是每个应用程序都需要自己的应用程序池。但这已经是一个要求,因为.NET核心ASP.NET应用程序必须在应用程序池中以非托管方式运行。

票数 0
EN

Stack Overflow用户

发布于 2020-11-12 17:20:35

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

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

代码语言:javascript
复制
  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);
                }
            }
        }

​

​

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64754465

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档