WCF服务操作未更新

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了WCF服务操作未更新相关的知识,希望对你有一定的参考价值。

我正在创建一个新的WCF服务。我最初只有三次手术。但过了一段时间后,我决定又增加两个。当我尝试从WPF客户端添加服务引用时,此操作不会出现在Microsoft测试客户端中,也不会出现在操作列表中。我还尝试评论其中一个初始操作。它仍然在Microsoft测试客户端中出现并且可以被调用。我试过删除服务生成的dll并重新生成。没运气。有一种“缓存”,Visual Studio存储我可以删除的WCF服务库?

更新:我正在使用ASP.NET开发服务器中运行的服务。

答案

您需要了解事情发生的顺序。

  1. 您可以更改代码,在其上添加[OperationContract]方法,或删除它们,或更改其参数或返回值。
  2. 然后,您必须构建服务,生成包含更改的.DLL。
  3. 然后,您必须将更改的DLL部署到将要运行的服务器上
  4. 然后,您必须重新启动该服务(这可能会自动发生,具体取决于服务器。例如,IIS会在看到DLL更改时回收该服务)
  5. 然后,您必须更新您的客户端,WCF测试客户端或“添加服务引用”或等效客户端。

最后一个将产生向服务发送新元数据或WSDL的请求的效果。只有这样,客户才能看到您对服务定义所做的更改。

另一答案

我不知道为什么,但我创建了一个新项目并从有问题的项目中复制了操作的定义,问题就消失了。一个案例更多的微软奥秘。

另一答案

确保在添加新操作后更新服务。

还要确保它们具有[OperationContract]属性。

另一答案

我们发现的一件事是,当您部署dll时,它们必须位于bin中,并且不能驻留在debug或release文件夹中。

另一答案

对我来说工作:只需重建wcf项目

另一答案

您是否在客户端关闭客户端连接以显示您的服务

class Test
    {
        static void Main()
        {
            LocationClient client = new LocationClient();

            // Use the 'client' variable to call operations on the service.

            // Always close the client.
            client.Close();
        }
    }
另一答案

解决方案:

确保您的dataContract不包含任何枚举(您可以使用整数)

确保引用解决方案中的项目而不是磁盘上的dll

  1. 删除“bin”和“obj”文件夹
  2. 重新编译
  3. 在IIS中回收应用程序池
  4. 在IIS中重新启动您的服务
  5. 在IIS中“浏览”您的服务

=>你明白了

以上是关于WCF服务操作未更新的主要内容,如果未能解决你的问题,请参考以下文章

为外部服务的操作合同控制 WCF 代码生成的方法

JSF2 commandButton 操作未在更新的片段中调用

客户端断开连接后,WCF操作未运行

wcf HTTP 终止

未找到 WCF 休息方法/操作 - 一切似乎都已正确配置

修改响应标头时,WCF Web 服务未返回正确的状态代码