六.MVC路由扩展
路由扩展的三个层面
1.在MapRoute层面扩展:
Routes.MapRoute("TestStatic","Test/{action}",new {controller="Second"})
只是添加url规则,HttpHandler根本就没有替换到。
2.在Route层面扩展:
先建立一个自己的route,MyRoute,这里要继承RouteBase:
/// <summary>
/// 直接扩展route,拒绝浏览器
/// </summary>
public class MyRoute : RouteBase
{
/// <summary>
/// 解析路由信息
/// </summary>
/// <param name="httpContext"></param>
/// <returns></returns>
public override RouteData GetRouteData(HttpContextBase httpContext)
{
//如果是 Chrome浏览器 62.0.3202.94版本 ,则访问 Pipe/Refuse,此页面上只有一句话“<h2>拒绝chrome浏览器访问</h2>”,而其他浏览器不作限制
if (httpContext.Request.UserAgent.IndexOf("Chrome/62.0.3202.94") >= 0)
{
RouteData rd = new RouteData(this, new MvcRouteHandler());
rd.Values.Add("controller", "Pipe");
rd.Values.Add("action", "Refuse");
return rd;
}
return null;
}
/// <summary>
/// 指定处理的虚拟路径
/// </summary>
/// <param name="requestContext"></param>
/// <param name="values"></param>
/// <returns></returns>
public override VirtualPathData GetVirtualPath(RequestContext requestContext, RouteValueDictionary values)
{
return null;
}
}
//如果是 Chrome浏览器 62.0.3202.94版本 ,则访问 Pipe/Refuse,此页面上只有一句话“<h2>拒绝chrome浏览器访问</h2>”,而其他浏览器不作限制
if (httpContext.Request.UserAgent.IndexOf("Chrome/62.0.3202.94") >= 0)
{
RouteData rd = new RouteData(this, new MvcRouteHandler());
rd.Values.Add("controller", "Pipe");
rd.Values.Add("action", "Refuse");
return rd;
}
return null;
}
/// <summary>
/// 指定处理的虚拟路径
/// </summary>
/// <param name="requestContext"></param>
/// <param name="values"></param>