加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

调用webserivce时报错“对操作"方法名"的回复消息正文进

发布时间:2020-12-17 00:42:55 所属栏目:安全 来源:网络整理
导读:今天在工作中遇到这个问题。我就把它记录下来。 在调试的过程中发现问题: ?????? 调用webservice的时候出现的问题;问题描述如下: ??????? 报错内容:对操作“方法名”的回复消息正文进行反序列化时出错 我是这样考虑的。是不是传过来的webservice中的内容

今天在工作中遇到这个问题。我就把它记录下来。

在调试的过程中发现问题:

?????? 调用webservice的时候出现的问题;问题描述如下:

??????? 报错内容:对操作“方法名”的回复消息正文进行反序列化时出错

我是这样考虑的。是不是传过来的webservice中的内容格式有问题?

然后我试着去使用 XmlSerializer 控制序列化生成 CDATA 内容(Serializing A String Within a CDATA Element )?

这个类也记录下,以后用得到:

添加一个CDATA的类,

 public class CDATA : IXmlSerializable
    {
        private string _value;
        /**/
        /// <summary>
        /// 默认构造函数
        /// </summary>
        public CDATA() { }
        /**/
        /// <summary>
        /// 带参数构造函数
        /// </summary>
        /// <param name="value"></param>
        public CDATA(string value)
        {
            this._value = value;
        }
        /**/
        /// <summary>
        /// 
        /// </summary>
        public string Value
        {
            get { return _value; }
        }

        XmlSchema IXmlSerializable.GetSchema()
        {
            return null;
        }

        void IXmlSerializable.ReadXml(XmlReader reader)
        {
            /**/
            /***** 如果此节点中包含有多个节点须使用此方法。**/
            this._value = reader.ReadElementContentAsString();
            /**/
            /* **********/
            //this.text = reader.ReadString();
            // reader.Read();
        }

        void IXmlSerializable.WriteXml(XmlWriter writer)
        {
            writer.WriteCData(this._value);
        }
        /**/
        /// <summary>
        /// 重写 获取CData节点的 内容
        /// </summary>
        /// <returns></returns>
        public override string ToString()
        {
            return this._value;
        }
        /**/
        /// <summary>
        /// 将 CDATA 对象隐式转换成 内容 字符串。
        /// </summary>
        /// <param name="element"></param>
        /// <returns></returns>
        public static implicit operator string(CDATA element)
        {
            return (element == null) ? null : element._value;
        }
        /**/
        /// <summary>
        /// 将 内容 对象隐式转换成 CDATA 字符串。
        /// </summary>
        /// <param name="text"></param>
        /// <returns></returns>
        public static implicit operator CDATA(string text)
        {
            return new CDATA(text);
        }

    }


?

调用方法如下:

[XmlElement("Content",Type = typeof(CDATA))]


?

 private CDATA _content = new CDATA();


  public CDATA Content
		{
			get
			{
                return _content.Value;
			}
			set
			{
				_content = value;
			}
		}


?到最后还是出现同样的错误,没辙了,到gg上搜了下,百度知道中有个人提问这个同样的问题,我按它的回答设置了MaxReceivedMessageSize 这个属性 把它改大一点了。

但是还是不行,最后还是设置了maxStringContentLength的这个属性,最终可以了。

原因就是这个字段中的内容太多。所以造成报错对操作“方法名”的回复消息正文进行反序。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读