获取 XML 正文 - 调用 SOAP Web 服务时出现反序列化错误

我的soapwebservice 和我为其编写的新C# 客户端有问题。服务器端采用现代标准 .NET Framework,而客户端仅具有 .NET 3.5。


每当我尝试从网络应用程序返回字符串时,我都会收到错误:


“无法反序列化操作“MyMethod”的响应消息正文。” 但有一个例外:“XML 文档中出现错误 (1.40286)。” 翻译:服务器响应的序列化错误,并带有 XML 文档错误。


现在让我更困惑的是:


每当我不返回文本而是在 Webmethod 中抛出异常(例如: throw new ArgumentException )时,我都不会收到序列化错误。

当 java 客户端使用此 Web 服务时......我从该客户端完全没有收到任何错误。

客户端代码:


public void MyMethod (bool _IsInDebugMode, MyWebMethodRef.MyProxySoapClient myclient)

{

    BasicHttpSecurityMode secMode = (_IsInDebugMode) ? BasicHttpSecurityMode.None : BasicHttpSecurityMode.Transport;

    BasicHttpBinding wsBinding = new BasicHttpBinding(secMode);


    wsBinding.MaxReceivedMessageSize = 2147483647;

    wsBinding.OpenTimeout = new TimeSpan(0, 0, 1);

    wsBinding.CloseTimeout = new TimeSpan(0, 0, 1);

    wsBinding.SendTimeout = new TimeSpan(0, 0, 30);

    wsBinding.ReceiveTimeout = new TimeSpan(0, 0, 30);


    string ret = myclient.myMethod(Convert.ToBase64String("Test"));

}   

服务器代码:


public class MyProxy : System.Web.Services.WebService

{

    public MyProxyHeader header;


    [WebMethod]

    [SoapHeader("header")]

    public string myMethod(string mytext)

    {


        return Convert.ToBase64String("blahblubb");

    }

}

现在我有点困惑,我的问题是:什么可能导致这个反序列化错误以及如何消除它?


一只甜甜圈
浏览 165回答 1
1回答

慕村225694

本质上:当我将客户端 .NET Framework 更新到 4.6 后,它就开始工作了。看起来最新的 .NET Framework 构建 xml 字符串的方式与 3.5 .NET Framework 不同,这意味着它们不太向下兼容!
打开App,查看更多内容
随时随地看视频慕课网APP