asp.net-mvc – RouteCollection.Ignore和RouteCollection.Ignor
RouteCollection.Ignore(url,constraints)和RouteCollection.IgnoreRoute(url,constraints)之间有什么区别?
背景 新的MVC项目在Global.asax RegisterRoutes方法中包含此IgnoreRoute调用,以跳过对ASP.NET系统其他地方处理的.axd位置的请求的路由. routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 我想添加一个额外的被忽略的路由到一个项目,我开始输出新的行.路线之后.I,Intellisense弹出.Ignore和.IgnoreRoute,听起来都一样. 根据MSDN文档,您可以看到一个是System.Web.Routing.RouteCollection类的实例方法,另一个是System.Web.Mvc.RouteCollectionExtensions的该类的扩展方法. > RouteCollection.Ignore:“如果请求URL满足指定的约束,则定义不应该检查与路由匹配的URL模式”(MSDN docs). 两者都采用路由URL模式和一组限制在该URL模式上的路由的应用的约束. 解决方法
在
source for
System.Web.Mvc.RouteCollectionExtensions on CodePlex之间,在我的本地GAC上运行一个
ILSpy,在System.Web.Routing.RouteCollection中,它似乎并没有区别,尽管他们似乎有完全独立的代码做同样的事情.
RouteCollection.IgnoreRoute(via CodePlex source) public static void IgnoreRoute(this RouteCollection routes,string url,object constraints) { if (routes == null) { throw new ArgumentNullException("routes"); } if (url == null) { throw new ArgumentNullException("url"); } IgnoreRouteInternal route = new IgnoreRouteInternal(url) { Constraints = new RouteValueDictionary(constraints) }; routes.Add(route); } RouteCollection.Ignore(通过ILSpy反编译) public void Ignore(string url,object constraints) { if (url == null) { throw new ArgumentNullException("url"); } RouteCollection.IgnoreRouteInternal item = new RouteCollection.IgnoreRouteInternal(url) { Constraints = new RouteValueDictionary(constraints) }; base.Add(item); } 差异 唯一真正的区别是位置明显的区别,一个是RouteCollection类本身的一个实例方法,一个是该类的一个扩展方法.考虑到实例与扩展执行之间的代码差异(例如扩展实例中的重要的空值检查),它们看起来是相同的. 在他们的核心,他们都使用完全相同的StopRoutingHandler类.两者都有自己的版本的密码IgnoreRouteInternal类,但这些版本在代码中是相同的. private sealed class IgnoreRouteInternal : Route { public IgnoreRouteInternal(string url) : base(url,new StopRoutingHandler()) { } public override VirtualPathData GetVirtualPath(RequestContext requestContext,RouteValueDictionary routeValues) { return null; } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 如何使用Velocity设计ASP.NET MVC站点进行缓存?
- asp.net-web-api – 在Bot框架中自动部署(Bot LUIS QnA表存
- ASP.NET Core:跟踪当前活动页面,或如何在视图中获取控制器
- 在ASP.NET Web应用程序中有未处理的异常是否可以接受?
- asp.net-mvc-2 – Html.Hidden()插入错误的值
- IHttpAsyncHandler和ASP.NET“请求执行”计数器的问题
- asp.net-mvc – Steve Sanderson的BeginCollectionItem帮助
- asp.net – 服务器端/客户端或两者用户输入验证
- asp.net-mvc-4 – Html.RenderAction使用Post而不是Get
- asp.net – 找不到指定文化或中性文化的任何资源
- asp.net – 使index.html显示而不是Default.aspx
- ASP.NET导出到Excel – 锁定单元格
- asp.net – VirtualPathUtility.ToAbsolute()VS.
- ASP.Net错误:“类型”foo“存在于”temp1.dll“
- asp.net – 自定义elmah.axd输出字段
- asp.net-core-signalr – 在ClientSide上获取Sig
- .net – CQRS EventSourcing可扩展性
- asp.net – 通过javascript禁止文本框中的退格
- asp.net-mvc – 应用偏移量时表示的UTC时间必须介
- asp.net-mvc – 将json存储在隐藏字段中以反序列