如何从Windows应用程序中使用未公开其元数据的WCF服务

时间:2014-11-09 08:44:04

标签: wpf windows wcf

我正在使用basicHttpBinding处理WCF服务。

我还在httpsGetEnabled=false元数据标记下设置<Service>,以避免泄露元数据信息。

后来我尝试从Windows应用程序中使用上面的WCF服务,但是当我尝试从Windows应用程序添加服务引用时出现以下错误。

  

下载'https://Service/Service.svc/_vti_bin/ListData.svc/$metadata'时出错   请求失败,HTTP状态为404:未找到。
  元数据包含无法解析的引用:'https://Service/Service.svc'   在https://Service/Service.svc没有可以接受该消息的端点监听。这通常是由错误的地址或SOAP操作引起的。有关详细信息,请参阅InnerException(如果存在)   远程服务器返回错误:(404)未找到。
  如果在当前解决方案中定义了服务,请尝试构建解决方案并再次添加服务引用。

我该如何解决这个问题?

换句话说,我如何使用不披露其元数据信息的服务?

请帮我解决这个问题。

最诚挚的问候,

Ranish

2 个答案:

答案 0 :(得分:1)

为什么不使用WSDL?服务引用向导需要WSDL才能工作。如果您确实不想在生产中传输WSDL,请在本地托管它,您可以在其中将WSDL 打开并将服务引用向导指向该WSDL。这样,您只需在完成开发后将地址更改为生产版本。

无论如何,这似乎是一个很好的模式,您仍然不想在开发和调试应用程序时使用您的生产服务。

答案 1 :(得分:0)

您可以在命令行上使用svcutil.exe从服务的程序集生成服务合同类。

svcutil.exe myAssembly.dll

如果您可以在Windows应用程序中包含包含服务合同的程序集,则可以完全避免服务引用,只需在客户端中使用ChannelFactory<IServiceContract>

相关问题