0

在我的解决方案中,我创建了一个 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; }
}

然后我使用添加服务引用选项将此服务添加到我的客户端应用程序。服务添加成功。然后在我的客户端程序中,我使用了这种方法。但是方法签名已更改。它改变如下。

 public void AddEmployee(ref string EmployeeNumber, 
    ref System.DateTime DOB, ref string FirstName, ref string LastName)

我在客户端中使用该服务如下。

TcpServiceReference.ServiceClassClient service =
            new TcpServiceReference.ServiceClassClient();

注意:TcpServiceReference 是服务名称

我无法理解原因。

4

2 回答 2

3

不完全确定为什么 WCF 有时会这样做,但如果您使用服务接口,您将获得“正确”的方法签名:

TcpServiceReference.IServiceClass service = 
    new TcpServiceReference.ServiceClassClient();

(假设这IServiceClass是svcutil(添加服务引用)为您生成的服务接口的客户端名称。)

于 2012-11-13T10:12:53.563 回答
0

你解决了问题吗?

看起来代理没有成功生成,除非你还有一个返回 void 的 AddEmployee 方法(并接受四个参数)?

我建议您重新生成(删除和创建)服务引用。

干杯——乔克

于 2012-11-13T10:02:01.583 回答