我們正在查詢字符串中發送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