使用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