我们正在查询字符串中发送HTML编码的字符串。它在IIS 6(Windows 2003)上工作正常。我们最近将网站移至Windows 2008(IIS 7.x)。由于移动任何包含“+”符号的查询字符串,即“%2b”在服务器“404 - 文件或目录未找到”上给出错误。IIS 7中URL中的'+'符号问题
任何帮助?
此致敬礼。
我们正在查询字符串中发送HTML编码的字符串。它在IIS 6(Windows 2003)上工作正常。我们最近将网站移至Windows 2008(IIS 7.x)。由于移动任何包含“+”符号的查询字符串,即“%2b”在服务器“404 - 文件或目录未找到”上给出错误。IIS 7中URL中的'+'符号问题
任何帮助?
此致敬礼。
编码以编程方式处理这个时候你可以改变+至20%,假设你有能对其加以产生的URL代码控制。
编码后的“+”与编码的“%20”相同,但编码为“%2b”的未编码的“+”不相同。 – Guffa 2011-01-05 13:24:43
也许我误解了这个问题 - 我认为这个问题是IIS不处理+作为一个空间。如果他实际上有一个加号作为文件URL的一部分,那么它必须被编码为%2b(因此应该已经工作了),因为+表示查询字符串中的空格。 – 2011-01-05 13:27:11
您面临此错误的原因是IIS7出于安全原因引入了新的URL过滤规则。 因此默认阻止'+'符号是URL中安全原因的一部分。
要解决此问题,您必须在web.config文件中设置allowDoubleEscaping =“true”。 这是做这件事的标签。
<system.webServer>
<security>
<requestFiltering allowDoubleEscaping="true">
</requestFiltering>
</security>
实测值上Serverfault http://serverfault.com/questions/76013/iis6-vs-iis7-and-iis7-5-handling-urls-with-plus-sign-in一个解决方案-base-not-querystri – Kashif 2011-01-05 13:22:36
该解决方案引用基址中的加号而不是查询字符串。你能否澄清+实际上是指文件URL中的空格还是加号? “+”(编码)意味着空间。 “%2b”是指+。 – 2011-01-05 13:29:04
“+”表示加号并编码为“%2b” – Kashif 2011-01-05 13:32:42