URL中的ASP.NET MVC冒号

Joe*_*gan 6 url asp.net-mvc routing colon

我已经看到IIS将冒号放入URL有问题.我也看到了其他人在这里提出的建议.

通过我正在处理的网站,我希望能够将电影,书籍等标题传递到我的网址,包含冒号,如下所示:

mysite.com/Movie/Bob:The Return
Run Code Online (Sandbox Code Playgroud)

MovieController例如,我将把它作为一个字符串消耗掉并在线下进一步使用.

我意识到结肠不理想.有没有人有任何其他建议?与目前一样糟糕,我正在从所有冒号(:)到另一个角色进行查找和替换,然后当我想在Controller端使用它时向后替换.

fra*_*ers 7

我通过将此添加到我的web.config来解决了这个问题:

<httpRuntime requestPathInvalidCharacters=""/>
Run Code Online (Sandbox Code Playgroud)

这必须在system.web部分中.

默认为:

<httpRuntime requestPathInvalidCharacters="&lt;,&gt;,*,%,&amp;,:,\,?"/>
Run Code Online (Sandbox Code Playgroud)

因此,只有结肠才能成为例外

<httpRuntime requestPathInvalidCharacters="&lt;,&gt;,*,%,&amp;,\,?"/>
Run Code Online (Sandbox Code Playgroud)

欲了解更多信息,请访问:http://msdn.microsoft.com/en-us/library/system.web.configuration.httpruntimesection.requestpathinvalidcharacters.aspx

根据我的理解,冒号字符可以作为URL中未编码的字符.我不知道为什么他们将它添加到requestPathInvalidCharacters的默认值.


p.c*_*ell 3

考虑对电影标题进行 URL 编码和解码。

你最终会得到foo.com/bar/Bob%58The%20Return

作为替代方案,请考虑利用HTML 帮助程序删除 URL 中的 URL 不友好字符(方法是URLFriendly())。冒号和占位符(例如破折号)之间的 SEO 好处可能可以忽略不计。

  • 我尝试进行编码/解码。IIS 似乎仍然看到了这一点并说:“嘿,那仍然是一个冒号。抛出 400 错误!” (10认同)