2010-01-30 27 views
0

我想要從我控制利用查詢字符串的iis web服務器請求一個網頁。丟失使用查詢字符串的基於Web的字符串解析中的字符

例如,我在我的WinForms應用程序WebBrowser控件,並要求類似的頁面「www.site.com/getpage.ashx?field=afsfgwesar+sere」

當我嘗試運行此失敗因爲在服務器端,getpage.ashx找不到正確的字段。

經過多次拔毛後,我發現字符串實際上已經從發送到瀏覽器的內容和收到的內容發生了變化 - 即 - 當服務器開始使用它時,缺少加號。

它以「afsfgwesar + sere」開頭並以「afsfgwesarsere」結尾。所以沿着這條線的某個地方弦正在被重新格式化?

這是我如何獲取字符串在服務器端 -

string field = (string)context.Request.QueryString["field"]; 

正是在這一點上,我已經加入進來,看到丟失的加號。

有沒有人知道我爲什麼失去加號以及如何恢復?

回答

0

加號是查詢字符串中的保留字符。它通常被解釋爲空間字符。只要看看搜索引擎,你會注意到這一點。

您可以通過在將文本添加到查詢字符串之前對其進行編碼來防止這種情況。使用HttpUtility.UrlEncode來做到這一點。使用HttpUtility.UrlDecode將其讀回。

欲瞭解更多信息,請閱讀: http://msdn.microsoft.com/en-us/library/4fkewx0t.aspx

+0

太棒了..非常感謝你。 – Grant 2010-01-30 13:36:30

2

+號被替換爲空格字符,因爲空格不是允許的字符。

在URL解碼後,您可以插入%2B以「獲取」加號。

www.site.com/getpage.ashx?field=afsfgwesar%2Bsere 

HttpUtility class有對URL進行URL編碼和解碼的方法。要看它基本上做了什麼,還有一個可以使用的online encoder/decoder

+0

你能告訴我怎麼之前重新它tranmission?在一種方式,我可以自動格式化回它的原始? – Grant 2010-01-30 13:35:46