如何阻止IIS解码URL

tam*_*nov 5 asp.net iis url url-routing

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

使用URL执行GET请求:

http://my.host/api1/MyEntity('%2311282')
Run Code Online (Sandbox Code Playgroud)

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

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

<httpRuntime targetFramework="4.5" relaxedUrlToFileSystemMapping="true" />
Run Code Online (Sandbox Code Playgroud)

2)在URL的末尾添加"/"

http://my.host/api1/MyEntity('%2311282')/
Run Code Online (Sandbox Code Playgroud)

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

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

小智 6

看一看Rewrite Module.

这里的一些信息:保留原始URL

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

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

希望有所帮助.