Ani*_*ani 16 .net wcf binding metadata wcf-binding
我对元数据发布概念感到困惑.
如果在WCF服务配置文件中我写了:
<serviceMetadata httpGetEnabled="false"/>
Run Code Online (Sandbox Code Playgroud)
无论是真是假.当我尝试使用"添加服务引用..."在客户端应用程序中提供服务引用并单击"发现"时,我能够检索服务引用.
但删除以下两行: -
<endpoint address="mex" binding="mexBasicHttpBinding" contract="IMetadataExchange"/>
<serviceMetadata httpGetEnabled="false"/>
Run Code Online (Sandbox Code Playgroud)
如今后,当我试图给使用客户端应用程序引用"添加服务引用...",并点击"查看",我不能够检索服务参考.
现在任何人都可以告诉我它究竟意味着什么.为什么在将其设置为False之后仍然允许设置参考.为什么在删除这些行之后它不允许设置引用.
-Anil
Cor*_*ius 21
MEX和WSDL是两种不同的方案,可以告诉潜在客户您的服务结构.因此,您可以选择将服务合同公开为"元数据交换格式"(MEX)或" Web服务描述语言 "(WSDL) - 后者可通过HTTP访问.
因此,为了生成代理,您需要元数据信息.当您删除serviceMetadata-line时,您说您没有以WSDL格式提供元数据.
但是,之前在MEX中发布元数据的行仍处于活动状态,因此您可以从这些元数据生成代理.
从那些自然地说,当您既不提供WSDL也不提供MEX格式的信息时,您无法生成代理.
正如Joel C正确指出的那样,绑定是一个(几乎)正交的概念.是否允许客户通过基本HTTP,HTTP,网络命名管道或水晶球与您通信,这完全不取决于您如何发布服务.
在WCF安全指导项目和/或MS "实践和模式"为WCF安全性可能会提供更深入的了解.
您正在添加服务引用,该引用基于Metadata Exchange(mex)生成代理.httpGetEnabled配置允许您设置一个http端点,该端点允许使用WSDL生成非mex代理,例如旧版.NET Web服务代理.它们是不同的协议,由不同的设置控制.我相信如果您有<serviceMetadata httpGetEnabled="true" httpGetUrl="http://localhost:8080/SampleService?wsdl"/>可以从.NET 2.0添加Web服务引用,您将无法使用该配置<serviceMetadata httpGetEnabled="false"/>.
| 归档时间: |
|
| 查看次数: |
19960 次 |
| 最近记录: |