使用类似http://abc.com/myid/ab%2fcd的网址(其中%2f是转义斜杠),asp.net将取消%2f,以便从我的应用程序的角度(以及从asp.net mvc的角度来看)URL是: http://abc.com/myid/ab/cd
由于我的应用程序使用asp.net mvc,如果我想要指定类似“/ myid / {id}”的路由,这种行为很容易导致路由问题,因为asp.net的unescaping将导致该路由不匹配
根据这个问题的答案:URL-encoded slash in URL并根据这个msdn页面:http://msdn.microsoft.com/en-us/library/ee656542.aspx解决方案(在.Net 4.0中)将以下内容放在你的web.config中:
<uri>
<schemeSettings>
<add name="http" genericUriParserOptions="DontUnescapePathDotsAndSlashes"/>
</schemeSettings>
</uri>
但我实际上无法让它工作 - “%2f”仍然会被自动转义为“/”。有谁知道为什么配置设置可能不适合我,或有任何其他建议?
答案 0 :(得分:5)
一个简单的解决方案是使用全能令牌,例如: {controller}/{action}/{*id}