我想知道Visual Studio中的客户端项目如何引用没有mex绑定的WCF服务。每当我在任何示例WCF服务中删除默认的mex绑定时,客户端应用程序都找不到该服务,并且在自动生成的注释中,建议在生产环境中,应删除mex绑定。那么客户端应用程序应该如何找到服务并引用它呢?
答案 0 :(得分: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);
如果您可以访问服务端配置文件,这也有帮助,因此您可以将端点详细信息复制到客户端配置中。
答案 1 :(得分:0)
mex端点是WCF SOAP服务的必要部分。它使客户端工具包能够下拉WSDL并自动生成代理类。正如您所指出的,没有它,客户端无法获取使用该服务的信息。如果您希望客户能够使用和查找您的服务,您应该在服务投入生产时将其保留。