使用Visual Studio 2008,我設置了一個使用Web服務的客戶端。 它與緩衝區大小無關(因爲這是一個典型的響應,所有適當的大小都增加了)。由於特殊字符(400)錯誤請求導致Web服務失敗
我正在使用List作爲Method的參數。 經過多次實驗後,我使用System.Net.WebClient手動創建Soap 1.1和Soap 1.2請求來測試結果。
using (var webCtx = new System.Net.WebClient())
{
webCtx.Headers.Add(System.Net.HttpRequestHeader.ContentType, "text/xml");
webCtx.Headers.Add("SOAPAction", "http://tempuri.org/HelloWorld");
var uri = new Uri("http://localhost:12345/MyProject/WebService.asmx");
MessageBox.Show(webCtx.UploadString(uri, xml));
}
其中xml是帶有實際數據的xml的字符串變量。 問題是當其中一個字段有特殊字符時。這是xml消息主體的示例。
<PocoClass>
<UnicodeString>123</UnicodeString>
</PocoClass>
如果UnicodeString的值是簡單的(即123),但是一旦特殊字符出現,我得到了400個錯誤請求。
現在,我發現了一個Microsoft知識庫文章,它描述了基本上指出的安裝hotfix的bug kb911276。這真的不是問題的解決方案,所以我想知道是否有任何想法來解決這個問題?
是唯一的解決方案來編寫某種自定義編碼/解碼或自定義綁定來實現的服務器和客戶端?有更簡單的想法嗎?
感謝
編輯: 使用一個List是不是一個問題,因爲它是由VS.處理這是一個更完整的(但仍然是部分)肥皂信息的內容。
<HelloWorld xmlns="http://tempuri.org/">
<pocoList>
<PocoClass>
<UnicodeString>123</UnicodeString>
</PocoClass>
</pocoList>
</HelloWorld>
列表與T []對我意識到的ASMX中的序列化沒有影響。 –
2009-08-12 19:17:50