You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Startup文件的ConfigureServices方法中提取指定主机名片段

在Startup.ConfigureServices中获取域名的主域部分(api-example)

方法一:通过配置文件指定(推荐)

把部署的域名写入appsettings.json,这样更灵活且不依赖服务器环境:

{
  "AppSettings": {
    "Domain": "www.api-example.com"
  }
}

然后在ConfigureServices中读取并解析:

public void ConfigureServices(IServiceCollection services)
{
    // 读取配置的完整域名
    string fullDomain = Configuration["AppSettings:Domain"];
    if (!string.IsNullOrEmpty(fullDomain))
    {
        // 拆分域名部分,提取api-example
        var domainSegments = fullDomain.Split('.');
        // 针对www.xxx.com格式,取中间段
        string hostName = domainSegments.Length >= 2 ? domainSegments[1] : string.Empty;
        // 后续可使用hostName变量
    }

    //*** App Settings Services
    services.AddAppServices(Configuration);

    //*** Business Services
    services.AddBusinessServicesCollection();
}

方法二:从服务器绑定地址获取(限特定场景)

如果不想用配置文件,可以通过IServer获取服务器绑定的地址,但注意IIS反向代理场景下,获取的是Kestrel监听地址而非IIS绑定域名,仅适用于直接部署的情况:

using Microsoft.AspNetCore.Hosting.Server;
using Microsoft.AspNetCore.Server.Kestrel.Core;

public void ConfigureServices(IServiceCollection services)
{
    var server = services.BuildServiceProvider().GetRequiredService<IServer>();
    var serverAddresses = server.Features.Get<IServerAddressesFeature>()?.Addresses;
    
    if (serverAddresses?.Any() == true)
    {
        string fullDomain = serverAddresses.First()
            .Replace("http://", "")
            .Replace("https://", "");
        
        var domainSegments = fullDomain.Split('.');
        string hostName = domainSegments.Length >= 2 ? domainSegments[1] : string.Empty;
    }

    //*** App Settings Services
    services.AddAppServices(Configuration);

    //*** Business Services
    services.AddBusinessServicesCollection();
}

关键说明

ConfigureServices是应用启动阶段执行的方法,此时没有请求上下文,无法获取当前请求的动态域名,只能读取部署前配置的固定域名。如果需要根据每个请求的域名动态处理,应在Configure方法的中间件中,或在控制器/服务里注入IHttpContextAccessor获取HttpContext.Request.Host。

内容的提问来源于stack exchange,提问作者fatih

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 21:20:29