加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

ASP.NET MVC Route的几种配置方法

发布时间:2020-12-16 09:18:40 所属栏目:asp.Net 来源:网络整理
导读:1.使用httpContext.Request.UserAgent(俗称UA)来过滤传进来的Url请求,在RegisterRoutes里Add如何路由: routes.Add("chrome",new ElevenRoute()); public class ElevenRoute : RouteBase // 扩展这个类 { public override RouteData GetRouteData(HttpCon

1.使用httpContext.Request.UserAgent(俗称UA)来过滤传进来的Url请求,在RegisterRoutes里Add如何路由:

  routes.Add("chrome",new ElevenRoute());

public class ElevenRoute : RouteBase //扩展这个类
    {
        public override RouteData GetRouteData(HttpContextBase httpContext)
        {
            if (httpContext.Request.UserAgent.IndexOf("Chrome/") >= 0)//通过拿到http的上下文,为所欲为,判断请求进来的浏览器版本,来过滤用户请求等等。
            {
                return null;
            }
            else
            {
                RouteData routeData = new RouteData(this,new MvcRouteHandler());
                routeData.Values.Add("controller","Home");
                routeData.Values.Add("action","Refuse");
                return routeData;
            }
        }
        public override VirtualPathData GetVirtualPath(RequestContext requestContext,RouteValueDictionary values)
        {
            return null;
        }
    }

2.使用固定的Url访问服务器上的文件,一般用于不给员工开访问服务器的权限,但是要查看服务器上的日志,怎么办。

routes.Add("Eleven",new Route("Eleven/201903042135",new ElevenRouteHandler()));

public class ElevenRouteHandler : IRouteHandler //扩展RouteHandler
    {
        public IHttpHandler GetHttpHandler(RequestContext requestContext)
        {
            return new ElevenHttpHandler();
        }
    }
    public class ElevenHttpHandler : IHttpHandler
    {
        public bool IsReusable => true;

        public void ProcessRequest(HttpContext context)
        {
            context.Response.ContentType = "text/html";
            //context.Response.Write("This is Eleven‘s Framework");
            string text = File.ReadAllText(context.Server.MapPath("~/Web.Config"));
            context.Response.Write(text);
            context.Response.End();
            //context.Response.Write($"Now is {DateTime.Now.ToShortTimeString()}");
        }
    }

3.匹配以Brad开头的地址,控制器就用Home(defaults的作用就是,当你输入http://localhost:8088/Brad的时候,匹配的还是http://localhost:8088/Home)

routes.MapRoute(
                name: "Brad",url: "Brad/{action}/{id}",defaults: new { controller = "Home",action = "Index",id = UrlParameter.Optional }
            );//1 匹配以Brad开头的地址,控制器就用Home

4.写死了WYD就访问Home/About

routes.MapRoute(
                name: "WYD",url: "WYD",action = "About",id = UrlParameter.Optional }
            );

5.从Url中直接读取年月日参数

routes.MapRoute(
               name: "Regex",url: "{controller}/{action}_{Year}_{Month}_{Day}",id = UrlParameter.Optional },constraints: new { Year = @"^d{4}",Month = @"^d{2}",Day = @"^d{2}",}
           );
public string Format(int year,int month,int day)
        {
            return $"This is {year}-{month}-{day}";
        }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读