我通过Visual Studio从WSDL生成的包装类来使用.Net中的内置SOAP支持。
现在,当我调用包装器上的一个方法并传递一个包含带有CRLF (\r\n)的字符串的对象时,只有LF (\n)将在服务器上结束。同样的事情也会发生,反之亦然。当服务器发送包含CRLF的字符串时,包装器将只输出LF。
我知道这是一个通常可以通过向XmlSerializer提供自己的XmlWriter来避免的问题,但是我找不到一个地方可以在所提供的框架中指定任何类似的东西。
我几乎想使用this thread中提供的RegEx解决方案,但我很难相信没有任何东西可以防止这个问题。
发布于 2011-12-20 07:26:27
为了完整起见,我没有找到一个解决方案来提供我正在寻找的东西。因此,对于我的情况,最好的解决方案是使用this answer中提出的解决方案。
发布于 2010-12-22 21:33:47
摘自here
XmlWriterSettings ws = new XmlWriterSettings();
ws.NewLineHandling = NewLineHandling.Entitize;
XmlSerializer ser = new XmlSerializer( typeof( Abc ) );
using (XmlWriter wr = XmlWriter.Create( "abc.xml", ws ))
{
ser.Serialize( wr, s );
}发布于 2011-12-13 00:34:21
使用SoapExtension转义流向服务(SoapMessageStage.AfterSerialize)的流中的回车。
This answer指出了一个很好的资源来解释SOAP内容的how to implement one on v1.1;其他的例子是将ProcessMessage覆盖到remove invalid XML characters或log the entire SOAP conversation。(配置涉及将扩展与web引用关联的SoapExtensionAttribute,通常在web.config中设置。)
https://stackoverflow.com/questions/4509630
复制相似问题