4

我想知道 Visual Studio 中的客户端项目如何引用没有 mex 绑定的 WCF 服务。每当我删除任何示例 WCF 服务中的默认 mex 绑定时,客户端应用程序都找不到该服务,并且在自动生成的评论中,建议在生产环境中删除 mex 绑定。那么客户端应用程序应该如何找到服务并引用它呢?

4

2 回答 2

10

如果您有权访问包含定义服务合同、操作和数据合同的类型的程序集,那么您可以使用ChannelFactory. 在这种情况下,您不需要检索任何服务元数据,因为您已经可以访问调用服务所需的所有信息。

例如

// Create service proxy on the fly
var factory = new ChannelFactory<IMyServiceContract>("NameOfMyClientEndpointInConfigFile");
var proxy = factory.CreateChannel();

// Create data contract
var requestDataContract = new MyDataContract();

// Call service operation.
var responseDataContract = proxy.MyServiceOperation(requestDataContract);

如果您可以访问服务端配置文件,它也会有所帮助,这样您就可以将端点详细信息从那里复制到您的客户端配置中。

于 2012-01-15T13:03:55.497 回答
0

mex 端点是 WCF SOAP 服务的必要部分。它使客户端工具包能够下拉 WSDL 并自动生成代理类。正如您所指出的,没有它,客户就无法获取信息来使用服务。如果您希望客户能够使用并找到您的服务,则应在服务投入生产时使其可用。

于 2012-01-15T03:06:23.560 回答