如何让asp.net不自动转发URL中的转义斜杠?

时间:2011-03-17 02:46:56

标签: asp.net asp.net-mvc url escaping asp.net-mvc-routing

使用类似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”仍然会被自动转义为“/”。有谁知道为什么配置设置可能不适合我,或有任何其他建议?

1 个答案:

答案 0 :(得分:5)

一个简单的解决方案是使用全能令牌,例如: {controller}/{action}/{*id}