当前位置:编程学习 > C#/ASP.NET >>

WCF 客户端没有返回服务器返回值

我在用jillzhang WCF例子 改动了一下服务类,返回一个Mydata结构,可是为什么客户端收到不返回值呢? 详如下:

项目名称                           说明
Wcf.Contracts                  契约项目,用于定义服务契约,数据契约,错误契约,消息契约等
Wcf.ServiceLib                 服务实现项目
Wcf.Host                       一个Console的服务的宿主
Wcf.WebServiceHost             一个IIS宿主
Wcf.Proxys                     服务代理项目
Wcf.Client                     客户端项目
URL:http://www.cnblogs.com/jillzhang/archive/2008/04/13/1151342.html

原Wcf.ServiceLib 类为:

namespace Wcf.ServiceLib
{
    public class Service:Contracts.IService
    {
        public MyData GetData(int filed)
        {
           Console.WriteLine("服务执行!");  
            return new Mydata();
        }
    }
}
我改为:
  public MyData GetData(int filed)
        {
            Console.WriteLine("服务执行!");              
            MyData xxx = new MyData();
            xxx.Data1 = 8888;
            Console.WriteLine(xxx.Data1.ToString() );     
            return  xxx;       ///<---------------------xxx的值返回不到客户端
 }

客户端为:
              NetTcpBinding bind = new NetTcpBinding();
            EndpointAddress address = new EndpointAddress("net.tcp://127.0.0.1:6547/Service");
            Proxys.IService ws = new Proxys.ServiceClient(bind, address);
            Wcf.Proxys.MyData myData = ws.GetData(10);
            Console.WriteLine(myData.Data1.ToString());   <---------这里显示一直是0
            Console.Read();
  





--------------------编程问答-------------------- xxx.Data1 = 8888; 是字段还是属性,是否赋值成功?

Wcf.Proxys.MyData 能否正确序列化? --------------------编程问答-------------------- Namespace Wcf.Contracts    ///   MYdata 代码
    <DataContract()> _
    Public Class MyData
        Private _filed1 As Integer

        <DataMember()> _
        Public Property Data1() As Integer
            Get
                Return _filed1
            End Get
            Set(ByVal value As Integer)
                _filed1 = value
            End Set
        End Property
    End Class
End Namespace --------------------编程问答-------------------- 前面发错了...这份是c#的
namespace Wcf.Contracts
{
    [ServiceContract]
    public inte易做图ce IService
    {
        [OperationContract]
        void  DoWork();

        [OperationContract]
        MyData GetData(int field);
    }
}


namespace Wcf.Contracts
{
    [DataContract]
    public class MyData
    {
        private int _filed1;

        [DataMember]
        public int Data1
        {
            get
            {
                return _filed1;
            }
            set
            {
                _filed1 = value;
            }
        }
    }
} --------------------编程问答-------------------- 在 _filed1 上放置<DataMember()> 试试 --------------------编程问答-------------------- WCF传输实质还是XML,所以是需要序列化的,你可以返回标准的类,在客户端重新组织成自定义类.   
  如:可以把自定义类的各个属性作为string返回.   

或者建议你加上[Serializable]试试看。 --------------------编程问答-------------------- 没用... --------------------编程问答-------------------- 好了..搞定了...代理没更新

真破...代理应该也没什么改动呀. --------------------编程问答-------------------- 恭喜搂住
补充:.NET技术 ,  C#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,