【问题标题】:Wcf referenced Class code updatewcf 引用类代码更新
【发布时间】:2016-10-30 18:15:57
【问题描述】:

我是 wpf 和 wcf C# 应用程序开发的新手,并且坚持更新引用 wcf 服务的类。例如,Service 有一个 testDbConnect 类,在 iservice.cs 和 service.cs 中定义和实现了各种服务操作契约函数。然后在 wpf 类中,添加该服务作为参考,并在通过按钮单击操作调用服务功能时完美运行。就像这就是我正在测试的按钮点击。

        Service1Client service = new Service1Client();

        if (service.Testdb() == 1)  //Testdb is the function in service which is only returning 1
        {
            MessageBox.Show("Hello there");
        }

我面临的问题,它完美地启动服务并在按钮单击时显示消息框(你好),但是当我更新代码时,即使在按钮点击内,它仍然继续显示你好消息框而不更新代码。也许包括一些代理生成,但我不明白。如果有人能用简单的话解释我并告诉我如何解决它,那就太好了。谢谢

【问题讨论】:

  • 您实际上是在哪里更新服务或客户端中的代码?您能分享一些您尝试更新的代码,并且仍然在那里显示你好?

标签: c# .net wpf wcf


【解决方案1】:

根据您使用 WCF 服务的方式,您需要更新服务引用。

假设您需要在服务中将int Testdb(); 重命名为int TestDb();。你去你的合同(IService1.cs),更改签名以匹配:

IService1.cs

[ServiceContract]
public interface IService1
{
    [OperationContract]
    int TestDb();
}

然后转到您的服务并更新您的方法: Service1.cs

public class Service1 : IService1
{
    public int TestDb()
    {
        return 1;
    }
}

然后,您可以在服务器端进行操作,但您需要在客户端应用程序上更新服务引用,以便您的代理反映新的方法签名。因此,在您的客户端应用程序中展开服务引用文件夹,右键单击 ServiceReference1 - 或服务引用的名称 - 节点并选择更新服务引用。

让 Visual Studio 更新服务引用,然后您应该可以通过新名称调用 TestDb 方法。

希望这会有所帮助!

【讨论】:

  • 嗨。非常感谢您的回复。我试过这个,现在得到以下异常附加信息:由于 EndpointDispatcher 的 ContractFilter 不匹配,无法在接收方处理带有 Action 'tempuri.org/IService1/InsertTestdb' 的消息。这可能是因为合约不匹配(发送方和接收方之间的操作不匹配)或发送方和接收方之间的绑定/安全不匹配。检查发送方和接收方是否具有相同的合同和相同的绑定(包括安全要求,例如消息、传输、无)。
  • 您可以在哪里正确更新参考。 VS显示任何错误?此错误表明您的客户端和服务器可能有不同的合同。
  • 看,我已经为你准备了一个样本。 Take a look。让我知道这对你有什么作用。
  • 谢谢卡雷尔先生。您给出的示例完全正常。现在我会用我的代码试试它是否有效。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多