我正在使用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
答案 0 :(得分:1)
为什么不使用WSDL?服务引用向导需要WSDL才能工作。如果您确实不想在生产中传输WSDL,请在本地托管它,您可以在其中将WSDL 打开并将服务引用向导指向该WSDL。这样,您只需在完成开发后将地址更改为生产版本。
无论如何,这似乎是一个很好的模式,您仍然不想在开发和调试应用程序时使用您的生产服务。
答案 1 :(得分:0)
您可以在命令行上使用svcutil.exe从服务的程序集生成服务合同类。
svcutil.exe myAssembly.dll
如果您可以在Windows应用程序中包含包含服务合同的程序集,则可以完全避免服务引用,只需在客户端中使用ChannelFactory<IServiceContract>
。