我有一个由客户托管的WCF服务的服务引用。服务引用具有定义服务契约的接口。我想创建一个实现此接口的服务对象,以便我可以将其实例添加到本地服务主机以进行测试。这样我就可以在使用相同的服务定义的同时伪造数据(虽然建立了本地端点)。
到目前为止我遇到的问题是:服务只有一种方法(现在),GetString
。合同自动生成了两种方法GetString
和GetStringAsync
。事实证明,当我基于接口创建服务时,它会自动为每个定义的方法生成异步方法。这意味着我的新服务现在有四种方法:
GetString
GetStringAsync
GetStringAsync
GetStringAsyncAsync
如果你抓住了那个中间部分,现在有两个GetStringAsync
,这会阻止服务启动。
有没有办法可以基于ServiceReference托管服务,以便我可以保持相同的界面?如果可能的话,我想防止在辅助服务器中复制服务引用的已定义方法,因为我可以只更新定义,当我需要实现新的东西时,编译器会通知我。另外,如果我这样做,我的客户端库(我想拥有尽可能多的共享代码)必须有两个单独的服务引用,而不仅仅是一个可配置的端点和远程主机,我可以传递给客户端构造函数。