asp.net-mvc – RouteCollection.Ignore和RouteCollection.IgnoreR
|
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 forSystem.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;
}
} (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net – 如何在南希显示我的404页面?
- ASP.NET中没有会话状态的用户身份验证
- asp.net-mvc – 当我使用Validator.TryValidateObject时验证
- ASP.NET’Session.Remove(key)’v / s’Session(key)= noth
- asp.net-mvc – “安全感知”动作链接?
- 为什么NuPack生成的NinjectMVC3.cs无法编译? (或者ASP.NET
- asp.net-mvc – .net MVC控制器动作方法的属性
- ASP.NET Webforms,用户控件中的JavaScript
- asp.net-mvc – 在我的ASP.NET MVC网站中缓存不能正常工作?
- asp.net-mvc – 使用MVC的AuthorizeAttribute和多组角色?
- asp.net-mvc – 帮助/提示提高我的ASP.NET MVC 2
- asp.net – SQL Timeout过期2秒查询
- asp.net – 来自数据库的实体框架更新模型,不为t
- asp.net – 无法获取IIS的目录
- asp.net-mvc – ASP.NET MVC MultiSelectList,其
- 如何为枚举执行asp.net mvc 4模型绑定?
- asp.net-mvc-3 – 我可以在App_Code之外使用全局
- 如何知道asp.net 3.5 sp1和asp.net mvc是否安装在
- asp.net – 使用OptGroup组构建选择列表
- asp.net-mvc – 用于Kendo网格模板中的循环
