我使用的是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。有什么想法吗?
答案 0 :(得分:5)
查看重写模块。
一些信息here: 保留原始网址
URL重写模块在以下服务器变量中保留原始请求的URL路径:
HTTP_X_ORIGINAL_URL - 此服务器变量包含解码格式的原始URL; UNENCODED_URL - 此服务器变量包含与Web客户端请求完全相同的原始URL,并保留所有原始编码。
希望有所帮助。