日期:2014-05-16  浏览次数:20924 次

WCF 数据契约

服务A  通过 wshttpbinding向  服务B 发送 Data 

我在B服务断点 测试 Data是 null 不明原因。 求指定

我把服务B寄宿在 IIS上 


[DataContract]
    public class Data{
[DataMember]
        public string A;
    }
 [ServiceContract]
    public interface Iservice
    {
        [OperationContract]
        string CollectData(Data data);   //服务器操作
    }

    public class Service : Iservice
    {
        public string CollectData(Data data)
        {
            Console.WriteLine("A 是 {0};",data.A);
            Console.WriteLine("B 是 {0};", data.B == null ? "null" : data.B);
            Console.WriteLine("C 是 {0};",data.C);
            return String.Format("A 是 {0},B 是 {1},C 是 {2}", data.A, data.B == null ? "null" : data.B, data.C);
        }
    }


服务A

using (Proxy proxy = new Proxy(new WSHttpBinding(), new EndpointAddress(new Uri("http://localhost:8732/WCF.Third/Service/"))))
            {
                MainConlose.Data data = new MainConlose.Data()
                {
                    A="StringA"
                };
                Console.WriteLine(proxy.CollectData(data));
                Console.WriteLine("完成发送Data");
                Console.Read();
            }

------解决方案--------------------
一,在B里面引用A代理,
二,将Data在生成独立的程序集(DLL),A与B都引用。
------解决方案--------------------
数据契约不一切会发生数据丢失,不知你客服两端的数据契约是否一直,有没有全都应用[DataMember]