【发布时间】:2009-06-12 23:34:14
【问题描述】:
使用 Visual Studio 2008,我设置了一个使用 Web 服务的客户端。 它与缓冲区大小无关(因为这是一个典型的响应,所有适当的大小都增加了)。
我使用列表作为方法的参数。 经过大量实验,我使用 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 Bad Request。
现在,我找到了描述错误kb911276 的Microsoft 知识库文章,其中基本上说明了安装热修复程序。那真的不是可以解决问题的方法,所以我想知道是否有任何想法如何解决这个问题?
是编写某种自定义编码/解码或自定义绑定以由服务器和客户端实现的唯一解决方案吗?有没有更简单的想法?
谢谢
已编辑: List 的使用不是问题,因为它由 VS 处理。这是肥皂消息的更完整(但仍然是部分)内容。
<HelloWorld xmlns="http://tempuri.org/">
<pocoList>
<PocoClass>
<UnicodeString>123</UnicodeString>
</PocoClass>
</pocoList>
</HelloWorld>
【问题讨论】: