【问题标题】:Getting XML body - Deserialization errors on a call to a soap webservice获取 XML 正文 - 调用肥皂网络服务时出现反序列化错误
【发布时间】:2019-12-17 00:13:38
【问题描述】:

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

每当我试图从 web 应用程序返回一个字符串时,我都会收到错误:

"Fehler beim Deserialisieren des Textkörpers der Antwortnachricht für Vorgang \"MyMethod\"。"唯一的例外是:“Fehler im XML-Dokument (1,40286)。” 翻译:服务器响应的序列化错误,带有 XML 文档错误。

现在让我更困惑的是:

  • 每当我在 Web 方法中抛出异常而不是返回文本时(例如: 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");
    }
}

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

【问题讨论】:

    标签: c# asp.net soap .net-3.5


    【解决方案1】:

    我终于知道是什么原因了。尽管如此,我仍然对它为什么会这样感到有些困惑,但在任何地方都没有任何说法。

    本质上:一旦我将客户端 .NET Framework 更新到 4.6,它就开始工作了。 看起来最新的 .NET Frameworks 构建 xml 字符串的方式与 3.5 .NET Framework 不同,这意味着它们向下兼容的程度不高!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-14
      • 1970-01-01
      • 1970-01-01
      • 2021-07-29
      • 2017-01-16
      • 2017-12-10
      相关资源
      最近更新 更多