QueryString中的加號不見了

來源:互聯網
上載者:User

現在手上的項目中使用了ClickOnce技術來部署用戶端,用戶端有時需要從伺服器傳一些參數,對於ClickOnce部署的程式來說我們可以在launch的URL中使用query strings來達到這一目的。參照MSDN上的文章,很快就寫完了代碼。好了,試試看。部署,從伺服器launch用戶端,似乎一切正常,所有參數的值都順利得到了。

可還沒等Check-in代碼,一個測試就失敗了。Debug了半天才發現原來是一個參數值中又加號:+。在使用HttpUtility.ParseQueryString分析query string後參數值中的加號變成了空格,以前似乎沒遇到過這樣的現象。Google了一下才知道原來加號在query string是保留用來代表空格的,要在query string中傳這些保留字元必須對query string進行編碼。

修改了服務端的代碼,想當然的在用戶端加了decode的方法,沒想到結果還是不對。查了MSDN關於HttpUtility.ParseQueryString方法的協助才知道原來這個方法內建會對query string進行解碼(decode)並返回包含結果的NameValueCollection。

忙了半天最後終於搞定了。

 

總結一下:

1)安全起見query string一定要encode

2)HttpUtility.ParseQueryString會自動做decode,不要畫蛇添足。

 

happy coding!

~ Crazy

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.