0

我正在构建 WCF 服务,我已经在 IService 文件中编写了合同并在服务文件中实现了它,当我尝试更改我声明的方法的任何返回值时出现问题,这是因为它们是被保存在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);
    }

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

4

1 回答 1

1

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

试试这个:

  1. 客户项目 -> 服务参考
  2. 选择您的参考 -> 鼠标右键单击
  3. 更新服务参考

如果您引用该程序集,WCF 还可以重用您的合同类型。在这种情况下,数据合同的更改将立即在客户端中看到。您可能会在该答案中找到实现步骤: How to use a custom type object at the client

于 2012-06-26T00:59:33.837 回答