2016-03-03 62 views
1

我定义了一些在我的客户端功能返回,作为一个例子问题有什么功能,我WFC服务和客户端

[OperationContract] 
List<CustomObject> GetObject(string id); 

当尝试,如果我试图从我的接口调用这个函数:

List<CustomObject> result = cvs.GetObject(5);我得到一个错误,而不是我所必须做的是CustomObject[] result = cvs.GetObject(5);

另外一个例子是,当我定义了一个消息:

[MessageContract] 
public class TestRequest 
{ 
    [MessageBodyMember] 
    public Int64 Id; 

    [MessageBodyMember] 
    public int row; 
} 

和我的接口功能:

[OperationContract] 
ResponseMessage GetMessage(TestRequest req); 

当我尝试使用这么多相同的方式:

TestRequest req = new TestRequest(); 
req.Id = 2; 
req.row = 1; 
ResponseMessage resp = cvs.GetMessage(req); 

我得到的消息there is no overload for method that takes one argument

下面是创建的参考文件中的相关部分由

[System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] 
ResponseMessage MyService.GetMessage(TestRequest request) 
{ 
    return base.Channel.GetMessage(request); 
} 

    public string GetMessage(long Id, int row, out long Length, out string Message, out System.IO.MemoryStream ReportMemoryStream) 
    { 
     TestRequest inValue = new ResponseMessage(); 
     inValue.Id = Id; 
     inValue.row= row; 
     ResponseMessage retVal = ((MyService)(this)).GetMessage(inValue); 
     Length = retVal.Length; 
     Message = retVal.Message; 
     ReportMemoryStream = retVal.ReportMemoryStream; 
     return retVal.FileName; 
    } 

为什么之间的客户端和服务WFC发生这种脱节的,我怎么能解决这个问题。

回答

2

有一个问题就在这里已经有一些答案,解释了“断开”当你把它叫做客户端和服务之间:

Why does WCF return myObject[] instead of List like I was expecting?

希望这是你所追求的。

+0

这解决了列表中的问题,但不解决我的自定义消息的问题。 – dearn44

+0

你使用MessageContract而不是DataContract的原因是什么?同样出于兴趣,如果您使用的是Visual Studio,那么IDE期望的方法定义是什么? –

+0

实际上并不知道,我只是想使用MessageContract一次,因为我试图尽可能多地学习秘密。) 也更新了这个问题,我相信它会回答你的其他问题。 – dearn44

2

您是否在上次更改方法后更新了服务引用? 看起来像他生成的代理不是最新的。

+0

是的,我没有运行'svcutil'来为我的服务生成一个更新的参考文件。 – dearn44