执行以下控制器操作
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
);
发布于 2010-07-09 01:29:03
所以我做了一些路由调试,发现以空格结尾的路由甚至不会被我的MVC应用程序评估。因此,IIS对这些请求的处理肯定很糟糕。
我在IIS 7.5中添加了一个重写规则,以匹配尾随空格,并将它们重写为不带空格的相同url。我对这个解决方案并不满意,但是还找不到一个解释为什么IIS不能正确处理带有尾随空格的URL。
发布于 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
这一切都只是胡乱猜测,但可能会有所帮助。
https://stackoverflow.com/questions/3206096
复制相似问题