无法更改wcf contract的方法返回值

时间:2012-06-25 17:01:54

标签: wcf

我正在构建一个WCF服务,我已经在IService文件中编写了合同并在Service文件中实现了它。当我尝试更改我声明的方法的任何返回值时,问题出现了因为它们被保存在CustomersService命名空间中的代码中,特别是在CustomersServiceClient类中,该类已被锁定且无法访问以进行更改。

这是我在ICustomersService文件中的代码:

 [ServiceContract]
    public interface ICustomersService
    {
        [OperationContract]
        CustomerDetails GetCustomerDetails(string customerid);
        [OperationContract]
        bool VerifyId(string customerid);
    }

以及CustomersService文件中的代码:

public CustomerDetails GetCustomerDetails(string customerid)
{
....
}
public bool VerifyId(string customerid)
{
...
}

并且在CustomerService1命名空间中我有这个已经生成并锁定的代码,所以任何修改我在IService中的方法的尝试都很麻烦,因为它在这里被锁定而且无法更改!

public class CustomersServiceClient : ClientBase<ICustomersService>, ICustomersService
    {
        public CustomersServiceClient();
        public CustomersServiceClient(string endpointConfigurationName);
        public CustomersServiceClient(Binding binding, EndpointAddress remoteAddress);
        public CustomersServiceClient(string endpointConfigurationName, EndpointAddress remoteAddress);
        public CustomersServiceClient(string endpointConfigurationName, string remoteAddress);

        public CustomerDetails GetCustomerDetails(string customerid);
        public bool VerifyId(string customerid);
    }

对我来说这是一个严重的问题,我希望你能给我一些答案。

1 个答案:

答案 0 :(得分:1)

Web服务比仅引用的程序集稍微复杂一些。如果更改服务接口,则不会自动更新代理类代码。每次更改合同时都需要手动更新它。

试试这个:

  1. 客户项目 - &gt;服务参考
  2. 选择参考 - &gt;单击鼠标右键
  3. 更新服务参考
  4. 如果您引用该程序集,WCF也可以重用您的合同类型。在这种情况下,数据合同的更改将立即在客户端中看到。您可以在该答案中找到实施步骤: How to use a custom type object at the client