c# - 为什么尾随 %20(在本例中为有效数据)会终止 asp.net mvc 路由

标签 c# .net asp.net-mvc asp.net-mvc-2 routing

执行以下 Controller 操作

    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

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

        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
        );

最佳答案

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

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

关于c# - 为什么尾随 %20(在本例中为有效数据)会终止 asp.net mvc 路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3206096/

相关文章:

c# - 使用默认行为将模型绑定(bind)到接口(interface)

c# - 如何检查 int 是否是 .NET 中的合法 HttpStatusCode?

.net - 您使用 Entity Framework 的经历如何?

c# - 如何向解决方案添加第二个 azure 功能?

c# - 如何计算多边形的圆角?

c# - 将按钮移动到 Div

asp.net-mvc - Kendo UI - 获取 Treeview 节点的文本

html - 引导安装 MVC 4 后无法整理登录页面

c# - MVC 中同一接口(interface)的 CaSTLe Windsor 多重实现

c# - ef 核心一对多关系抛出异常无法添加或更新子行