执行以下 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/