在我的解决方案中,我创建了一个WCF服务,它将消息合同类作为参数。
[ServiceContract]
public interface IServiceClass
{
[OperationContract]
Employee AddEmployee(Employee employee);
}
public class ServiceClass : IServiceClass
{
public Employee AddEmployee(Employee employee)
{
//do something
}
}
[MessageContract]
public class Employee
{
[MessageHeader]
public string EmployeeNumber { get; set; }
[MessageBodyMember]
public string FirstName { get; set; }
[MessageBodyMember]
public string LastName { get; set; }
[MessageBodyMember]
public DateTime DOB { get; set; }
}
然后我使用Add service reference选项将此服务添加到我的客户端应用程序。该服务已成功添加。 然后在我的客户端程序中我使用了这种方法。但方法签名已被更改。它改变如下。
public void AddEmployee(ref string EmployeeNumber,
ref System.DateTime DOB, ref string FirstName, ref string LastName)
我在客户端使用该服务如下。
TcpServiceReference.ServiceClassClient service =
new TcpServiceReference.ServiceClassClient();
注意:TcpServiceReference是服务名称
我无法理解原因。
答案 0 :(得分:3)
不完全确定为什么WCF会这样做一次,但是如果你使用服务接口,你将获得“正确”的方法签名:
TcpServiceReference.IServiceClass service =
new TcpServiceReference.ServiceClassClient();
(假设IServiceClass
是svcutil(添加服务引用)为您生成的服务接口的客户端名称。)
答案 1 :(得分:0)
你解决了这个问题吗?
看起来代理没有成功生成,除非你还有一个返回void的AddEmployee方法(并且需要四个参数)?
我建议您重新生成(删除并创建)服务引用。
干杯 --Jocke