首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为什么拖尾%20 (在本例中是有效数据)会终止asp.net mvc路由

为什么拖尾%20 (在本例中是有效数据)会终止asp.net mvc路由
EN

Stack Overflow用户
提问于 2010-07-09 00:57:20
回答 2查看 1.9K关注 0票数 18

执行以下控制器操作

代码语言:javascript
复制
    public ActionResult NextBySURNAME(int id, string data)
    {
        //code to process the data and edit the id accoringly not written yet
        return RedirectToAction("Edit", new { id = id });
    }

如果我用/Mycontroller/NextBySURNAME/12/Smith%20Simon调用它

那么它工作得很好(在本例中编辑记录12),但是

/Mycontroller/NextBySURNAME/12/Smith%20

给了我一个404

现在我知道在某些情况下,在我的问题域中,尾随空格是很重要的,所以我不想只是修剪它。那么为什么这会破坏我的路线呢?

代码语言:javascript
复制
        routes.MapRoute(
            "Default", // Route name
            "{controller}/{action}/{id}/{data}", // URL with parameters
            new { controller = "Home", action = "Index", id = UrlParameter.Optional, data=UrlParameter.Optional } // Parameter defaults
        );
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-07-09 01:29:03

所以我做了一些路由调试,发现以空格结尾的路由甚至不会被我的MVC应用程序评估。因此,IIS对这些请求的处理肯定很糟糕。

我在IIS 7.5中添加了一个重写规则,以匹配尾随空格,并将它们重写为不带空格的相同url。我对这个解决方案并不满意,但是还找不到一个解释为什么IIS不能正确处理带有尾随空格的URL。

票数 9
EN

Stack Overflow用户

发布于 2010-07-09 03:28:07

我认为在.NEt 4.0中处理转义字符的方式是可以改变的,但我自己还没有尝试过。参见http://msdn.microsoft.com/en-us/library/system.uri.aspx

安德鲁斯回答URL-encoded slash in URL

也就是How to create a Uri instance parsed with GenericUriParserOptions.DontCompressPath

这一切都只是胡乱猜测,但可能会有所帮助。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3206096

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档