在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
适用场景:当前项目有一个接口:http://xxx.com/a.aspx,现在我们在不需要a.aspx这个文件的,直接处理这个地址的请求,我们可以做很多的事情,比如,直接返回一个静态的JSON文件内容。 Global.asax全局配置文件添加路由表的注册 protected void Application_Start(object sender, EventArgs e) { RouteTable.Routes.Ignore("{resource}.axd/{*pathInfo}"); RouteTable.Routes.RouteExistingFiles = true; RouteTable.Routes.Add("Stocks", new MyRoute()); } 定制路由MyRoute 继承BouteBase public class MyRoute : RouteBase { public override RouteData GetRouteData(HttpContextBase httpContext) { //获取相对路径 var virtualPath = httpContext.Request.AppRelativeCurrentExecutionFilePath; virtualPath = virtualPath.Substring(2).Trim('/'); if (virtualPath.ToLower().Contains("a.aspx")) { string name = httpContext.Request["name"]; var data = new RouteData(this, new MyRouteHandler()); data.Values.Add("name", name ?? "test"); return data; } //返回值为null,跳过此路由,进行下一个匹配 return null; } public override VirtualPathData GetVirtualPath(RequestContext requestContext, RouteValueDictionary values) { return null; } } RouteHandler public class MyRouteHandler : IRouteHandler { public IHttpHandler GetHttpHandler(RequestContext requestContext) { return new MyHttpHandler(requestContext); } } HttpHandler 这里可以对Request请求做相应的业务处理 public class MyHttpHandler : IHttpHandler { public RequestContext RequestContext { get; set; } public MyHttpHandler(RequestContext context) { RequestContext = context; } public void ProcessRequest(HttpContext context) { string name = RequestContext.RouteData.Values["name"].ToString(); context.Response.ContentType = "application/json"; context.Response.Charset = "utf-8"; context.Server.Transfer("data.json"); context.Response.End(); } public bool IsReusable => false; } 也可以直接使用HttpHandler,在web.config文件里配置处理请求,方式多种。
|
请发表评论