成都网站建设设计

将想法与焦点和您一起共享

Asp.netcore二级域名的设置-创新互联

对于单个web引用来说,一个应用则含有admin管理,pc客户端,mobile移动端和api等。因此在开发商引入的Areas来进行不区分。

成都创新互联于2013年创立,是专业互联网技术服务公司,拥有项目网站设计、成都网站设计网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元德令哈做网站,已为上家服务,为德令哈各地企业和个人服务,联系电话:028-86922220

在域名设置的时候就存在这样一个问题:

  1. PC页面绑定了 www.abc.com的域名
  2. Wap 页面在项目中通过 Areas建立Wap域来区分。
  3. Api 建立 Areas Api来区分

    那么通过域名+路由的方式即可访问 wap页面和api页面。但如此并不友好,如何通过一个m.abc.com域名来访问 wap页面呢。

    众说周知,Asp.net core 的设计是基于管道,框架为我们提供了“中间件(Middleware)”,因此我们是否有可以通过建立一个中间来捕捉请求,对域名进行判断,当访问到m.abc.com域名的时候 就默认的返回wap的页面。

    解决方案如下:

    建立一个中间件 PathRewritingMiddleware 当检测到请求的地址没有任何连接参数(纯域名访问)时,区分返回不同的页面。

    public class PathRewritingMiddleware
    {
        private readonly RequestDelegate _next;
        private readonly string _domain;
        private readonly string _path;
    
        public PathRewritingMiddleware(RequestDelegate next,string domain,string path)
        {
            _next = next;
            _domain = domain;
            _path = path;
        }
    
        public Task Invoke(HttpContext context)
        {
            if(context.Request.Path.Equals("/") || context.Request.Path.Equals("")) {
                string host = context.Request.Host.Value;
                if (host.Equals(_domain, StringComparison.InvariantCultureIgnoreCase))
                {
                    context.Request.Path = _path;
                }
            }
            return _next(context);
        }
    }

    在Startup文件的 Configure(IApplicationBuilder app, IHostingEnvironment env) 方法中注册,一定要在 app.UseMvc 前面

    //不同的域名显示不同的默认地址
    app.UseMiddleware("m.abc.com","/wap/home");

如此当我们访问 http://m.abc.com 的时候 默认返回的就是 http://m.abc.com/wap/home 页面内容(不是跳转)。
同理可以注册多次,进行不同的区分也可自定义编辑各种模块页面地址

创新互联www.cdcxhl.cn,专业提供香港、美国云服务器,动态BGP最优骨干路由自动选择,持续稳定高效的网络助力业务部署。公司持有工信部办法的idc、isp许可证, 机房独有T级流量清洗系统配攻击溯源,准确进行流量调度,确保服务器高可用性。佳节活动现已开启,新人活动云服务器买多久送多久。


本文标题:Asp.netcore二级域名的设置-创新互联
本文来源:http://chengdu.cdxwcx.cn/article/cddpps.html