如何在使用ASP.NET友好URL时忽略某些路由?
发布时间:2020-12-16 00:05:46 所属栏目:asp.Net 来源:网络整理
导读:我成功使用ASP.NET友好URL,但我需要忽略特定Foo.aspx页面的路由(因为此页面需要POST数据,并且一旦重新路由POST数据在Page_Load()中不再可用!). 看起来使用ASP.NET友好URL会丢弃任何忽略路由的尝试.使用ASP.NET友好URL路由后,即使是忽略路由的MSDN example也
我成功使用ASP.NET友好URL,但我需要忽略特定Foo.aspx页面的路由(因为此页面需要POST数据,并且一旦重新路由POST数据在Page_Load()中不再可用!).
看起来使用ASP.NET友好URL会丢弃任何忽略路由的尝试.使用ASP.NET友好URL路由后,即使是忽略路由的MSDN example也不起作用: routes.Ignore("{*allaspx}",new {allaspx=@".*.aspx(/.*)?"}); 并忽略到Foo.aspx的路由,代码看起来应该是这样,不是吗? routes.Ignore("{*fooaspx}",new { fooaspx = @"(.*/)?foo.aspx(/.*)?" }); Global.asax代码如下所示: public static void RegisterRoutes(RouteCollection routes) { // This doesn't work whether I put this code before or after ASP.NET Friendly URLs code. routes.Ignore("{*allaspx}",new { allaspx = @".*.aspx(/.*)?" }); routes.Canonicalize().Lowercase(); var settings = new FriendlyUrlSettings(); settings.AutoRedirectMode = RedirectMode.Permanent; routes.EnableFriendlyUrls(settings); } void Application_Start(object sender,EventArgs e) { RegisterRoutes(RouteTable.Routes); } 这个问题has been asked on the ASP.NET Friendly URLs codeplex site,但没有得到答案. 谢谢你的帮助:) 解决方法
感谢Damian Edwards的评论,我完全解决了这个问题,感谢Damian.
我只需要从WebFormsFriendlyUrlResolver派生来覆盖方法ConvertToFriendlyUrl(),当url匹配我不想重定向的url时,使其成为no-op: using Microsoft.AspNet.FriendlyUrls.Resolvers; public class MyWebFormsFriendlyUrlResolver : WebFormsFriendlyUrlResolver { public MyWebFormsFriendlyUrlResolver() { } public override string ConvertToFriendlyUrl(string path) { if (!string.IsNullOrEmpty(path)) { if (path.ToLower().Contains("foo")) { // Here the filter code return path; } } return base.ConvertToFriendlyUrl(path); } } 然后在Global.asax中,代码现在看起来像: public static void RegisterRoutes(RouteCollection routes) { routes.Canonicalize().Lowercase(); var settings = new FriendlyUrlSettings(); settings.AutoRedirectMode = RedirectMode.Permanent; routes.EnableFriendlyUrls(settings,new IFriendlyUrlResolver[] { new MyWebFormsFriendlyUrlResolver() }); } void Application_Start(object sender,EventArgs e) { RegisterRoutes(RouteTable.Routes); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net – 如何自定义UseExternalSignInCookie?
- asp.net-mvc – 如果我使用ASP .NET MVC 3,我可以安全地从V
- SignalR(.NET Core)中的JWT身份验证,而不在查询字符串中传递
- asp.net-mvc – 自定义异常过滤器在asp.net MVC中没有被击中
- asp.net – 以编程方式将Javascript文件添加到.net中的用户
- Linq高级查询
- log4net 日志框架的配置
- ASP.NET开发常用简单实用的方法
- asp.net-mvc – 从头开始??学习asp.net mvc并且能在短时间内
- asp.net scriptbundle多个include vs single include
推荐文章
站长推荐
- asp.net – 未定义Page_ClientValidate
- ASP.Net – 在没有Windows用户的情况下使用基本身
- asp.net – mvc渲染没有httpContext或控制器上下
- ASP.NET Core中Server.Transfer的替代方案
- asp.net – 找不到指定文化或中性文化的任何资源
- asp.net-mvc-3 – 将部分视图返回到同一视图
- 页面刷新导致ASP.NET应用程序中重复的POST
- asp.net – Visual Studio 2008 – 解决方案的条
- asp.net-mvc – MVC发布复杂对象的列表
- asp.net – 如何通过web.config文件中的Access-C
热点阅读