none
论坛里的朋友帮帮忙,wcf调用这块遇到点问题 “基础连接已经关闭: 连接被意外关闭。” RRS feed

  • 问题

  • 下面是我定义的接口,和数据协议<br/><br/>namespace WcfService1
    {
        [ServiceContract]
        public interface IService1
        {
            [OperationContract]
            string GetData(int value);
    
            [OperationContract]
            WcfMessage GetDataUsingDataContract(CompositeType composite);
    
            [OperationContract]
            CompositeType GetDataUsingDataContract2(CompositeType composite);
        }
    
        [DataContract]
        public class CompositeType
        {
            bool boolValue = true;
            string stringValue = "Hello ";
    
            [DataMember]
            public bool BoolValue
            {
                get { return boolValue; }
                set { boolValue = value; }
            }
    
            [DataMember]
            public string StringValue
            {
                get { return stringValue; }
                set { stringValue = value; }
            }
        }
    
        /// <summary>
        /// WCF传输对象
        /// </summary>
        [DataContract]
        public class WcfMessage
        {
            /// <summary>
            /// 错误消息
            /// </summary>
            [DataMember]
            public string ErrorMessage
            {
                get { return errorMessage; }
                set
                {
                    if ((!string.IsNullOrEmpty(value)) && value.Length > 0)
                    {
                        HasError = true;
                        errorMessage = value;
                    }
                }
            }
    
            /// <summary>
            /// 是否包含错误
            /// </summary>
            [DataMember]
            public bool HasError { get { return hasError; } set { hasError = value; } }
    
            /// <summary>
            /// wcf传输实体
            /// </summary>
            [DataMember]
            public object Body { get; set; }
    
            private string errorMessage;
    
            private bool hasError = false;
        }
    }
    
    


    调用如下:

     

    public class Service1 : IService1
        {
            public string GetData(int value)
            {
                return string.Format("You entered: {0}", value);
            }
            /// <summary>
            /// 出现“基础连接已经关闭: 连接被意外关闭。”错误
            /// </summary>
            public WcfMessage GetDataUsingDataContract(CompositeType composite)
            {
                if (composite == null)
                {
                    throw new ArgumentNullException("composite");
                }
                if (composite.BoolValue)
                {
                    composite.StringValue += "Suffix";
                }
                WcfMessage wm = new WcfMessage();
                wm.Body = null;    //如果给Body赋值为null,没有错误
                wm.HasError = true;
                return wm;
            }
            /// <summary>
            /// 可以正常使用
            /// </summary>
            public CompositeType GetDataUsingDataContract2(CompositeType composite)
            {
                if (composite == null)
                {
                    throw new ArgumentNullException("composite");
                }
                if (composite.BoolValue)
                {
                    composite.StringValue += "Suffix";
                }
                return composite;
            }
    }
    
    不知道上面什么地方有问题,请大家帮帮忙,是不是数据协议中的属性不能定义成object类型啊。为什么呢?

     

    2011年12月31日 7:49

答案

全部回复