如何阻止IIS解码URL

时间:2014-01-28 18:07:29

标签: asp.net url iis url-routing

我使用的是Windows 7,IIS 7.5,.NET 4.5 (对于Windows 8,IIS 8.5,.NET 4.5,这可行)。

使用网址执行GET请求:

http://my.host/api1/MyEntity('%2311282')

问题是,当它到达服务器端代码时,%23 char已被解码为'#' 和Uri对象认为它是一个片段char。 Win8机器接收到char%23未触及的URL。

试图:
1)使用此配置设置

<httpRuntime targetFramework="4.5" relaxedUrlToFileSystemMapping="true" />

2)添加&#39; /&#39;在URL的末尾

http://my.host/api1/MyEntity('%2311282')/

3)卸载url rewrite 2模块 - 然后重新安装。还尝试在web.config中为模块注释重写部分。

为什么我要复制Windows 8的行为 - 不解码URL。有什么想法吗?

1 个答案:

答案 0 :(得分:5)

查看重写模块。

一些信息here: 保留原始网址

URL重写模块在以下服务器变量中保留原始请求的URL路径:

HTTP_X_ORIGINAL_URL - 此服务器变量包含解​​码格式的原始URL; UNENCODED_URL - 此服务器变量包含与Web客户端请求完全相同的原始URL,并保留所有原始编码。

希望有所帮助。