对于单个web引用来说,一个应用则含有admin管理,pc客户端,mobile移动端和api等。因此在开发商引入的Areas来进行不区分。
在域名设置的时候就存在这样一个问题:
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<PathRewritingMiddleware>("m.abc.com","/wap/home");
如此当我们访问 http://m.abc.com 的时候 默认返回的就是 http://m.abc.com/wap/home 页面内容(不是跳转)。
同理可以注册多次,进行不同的区分也可自定义编辑各种模块页面地址
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。