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

如何在ASP.NET Web应用(C#)中添加子域名

给ASP.NET Web应用添加子域名(如subsite.site.com)的操作步骤

一、DNS域名解析配置(必须在Visual Studio外操作)

这一步是让网络请求能定位到你的服务器,步骤如下:

  • 登录你的域名服务商管理后台
  • 添加一条解析记录:
    • 记录类型选A记录(直接指向服务器IP)或CNAME记录(指向主域名别名,适合CDN场景)
    • 主机名填subsite
    • 记录值填服务器公网IP(A记录)或主域名的CNAME值(如site.com)
  • 保存配置后,等待DNS生效(通常10分钟到2小时,可通过ping subsite.site.com验证是否指向正确IP)

二、Web服务器配置(以IIS为例,Visual Studio外操作)

ASP.NET应用部署后依赖服务器处理域名绑定,步骤:

  • 打开IIS管理器,找到主站点(或直接创建新站点)
  • 右键选择「添加网站」:
    • 网站名称:自定义(如SubsitePortal)
    • 物理路径:可指向主站点的子目录(共享主项目代码),或独立的ASP.NET项目发布目录(独立子站点)
    • 绑定设置:
      • 类型:选HTTP(80端口)或HTTPS(443端口)
      • IP地址:选择服务器的公网IP
      • 主机名:填写subsite.site.com
      • 若用HTTPS,需提前给子域名申请SSL证书,绑定环节选择对应证书
  • 点击确定完成配置,此时IIS会将subsite.site.com的请求导向指定目录

三、ASP.NET应用内部路由配置(Visual Studio内操作)

如果子站点需要和主站点共享代码,可通过路由约束区分子域名请求:

.NET Core/.NET 5+ 项目

  1. 自定义子域名路由约束类:
public class SubdomainRouteConstraint : IRouteConstraint
{
    private readonly string _targetSubdomain;

    public SubdomainRouteConstraint(string targetSubdomain)
    {
        _targetSubdomain = targetSubdomain;
    }

    public bool Match(HttpContext httpContext, IRouter route, string routeKey, RouteValueDictionary values, RouteDirection routeDirection)
    {
        var hostParts = httpContext.Request.Host.Host.Split('.');
        if (hostParts.Length < 2) return false;
        var currentSubdomain = hostParts[0];
        return currentSubdomain.Equals(_targetSubdomain, StringComparison.OrdinalIgnoreCase);
    }
}
  1. 在Program.cs中注册约束并配置路由:
// 注册路由约束
builder.Services.Configure<RouteOptions>(options =>
{
    options.ConstraintMap.Add("subdomain", typeof(SubdomainRouteConstraint));
});

// 配置端点路由
app.UseEndpoints(endpoints =>
{
    // 子域名专属路由
    endpoints.MapControllerRoute(
        name: "subsite_route",
        pattern: "{controller=SubsiteHome}/{action=Index}/{id?}",
        constraints: new { subdomain = "subsite" }
    );

    // 主域名默认路由
    endpoints.MapControllerRoute(
        name: "default",
        pattern: "{controller=Home}/{action=Index}/{id?}"
    );
});

.NET Framework 项目

在RouteConfig.cs中配置路由约束,逻辑类似——通过HttpContext.Current.Request.Url.Host获取域名判断,再映射到对应控制器。

四、本地开发环境测试配置

要在本地调试子域名,需修改本地hosts文件和项目启动配置:

  1. 修改本地hosts文件(路径:C:\Windows\System32\drivers\etc\hosts),添加一行:
127.0.0.1 subsite.site.com
  1. 在Visual Studio中修改项目启动配置:
    • 右键项目→属性→调试→修改「应用URL」为https://subsite.site.com:5001;http://subsite.site.com:5000(端口对应你的项目配置)
    • 或直接编辑launchSettings.json文件,更新applicationUrl字段

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 02:21:17