2011-04-15 73 views
13

我对元数据发布概念感到困惑。如果我设置HttpGetEnabled = false会发生什么

如果WCF服务配置文件,我曾写过:

​​

无论是真的还是假的。当我尝试使用“添加服务引用...”在客户端应用程序中提供服务引用并单击“发现”时,我可以检索服务引用。

但是,当以下两行中删除: -

<endpoint address="mex" binding="mexBasicHttpBinding" contract="IMetadataExchange"/> 

<serviceMetadata httpGetEnabled="false"/> 

现在后,当我试图给使用客户端应用程序引用“添加服务引用...”,并点击“发现”,我是不是能够检索服务参考....

现在谁能告诉我究竟是什么意思。 为什么设置为False后仍然允许设置参考。为什么删除这些行后,不允许设置参考。

-Anil

回答

21

MEX和WSDL是告诉潜在客户您服务结构的两种不同方案。因此,您可以选择将服务合约公开为“元数据交换格式”(MEX)或“web service description language”(WSDL) - 后者可通过HTTP访问。

因此,为了生成代理,您需要元数据信息。当你删除serviceMetadata行时,你说你没有提供WSDL格式的元数据。

但是,之前在MEX中发布元数据的行仍处于活动状态,因此您可以根据这些元数据生成代理。

从那些自然而然的是,当你既不提供WSDL也不提供MEX格式的信息,你不能生成代理。

正如Joel C正确指出的,绑定是一个(几乎)正交的概念。无论您允许客户通过基本的HTTP与您通话,使用HTTP,网络命名管道还是水晶球,都不依赖于您发布服务的方式。

WCF security guidance project和/或MS "practises and patterns" for WCF security可能提供更深入的了解。

+0

感谢它清除了很多怀疑.... – 2011-05-04 19:01:10

+0

我的荣幸。 :) – Cornelius 2011-05-05 07:45:08

+0

我不知道这是否回答了这个问题:_“如果我设置HttpGetEnabled = false?会发生什么?”,是吗? – 2017-11-02 09:53:11

5

您要添加的服务引用,其基于元数据交换(MEX)的代理。 httpGetEnabled配置允许您设置一个http端点,该端点允许使用WSDL生成非mex代理,例如传统的.NET web服务代理。它们是不同的协议,由不同的设置控制。我相信如果你有<serviceMetadata httpGetEnabled="true" httpGetUrl="http://localhost:8080/SampleService?wsdl"/>,你可以添加一个来自.NET 2.0的web服务引用,你无法使用配置<serviceMetadata httpGetEnabled="false"/>来完成。

+0

这意味着通过指定“httpGetEnabled = true”将使我的WCF服务作为web服务使用。如果是,那么“BasicHttpBinding”有什么用?由于使用BasicHttpBinding的主要优点是使您的WCF服务可用于旧版本,并且可以作为web服务使用(功能称为向后兼容性,我猜,我对此不太确定),请您告诉我们究竟是什么“HttpGetEnabled”和“BasicHttpBinding”之间的差异/共同关系。如果它们是相关的,那么当我使用“WsHttpBinding”时,为什么我们应该使用“HttpGetEnabled = true”行 – 2011-04-15 06:38:40

+2

WCF服务如何与其他进程(其端点绑定)进行通信以及它如何公开有关其自身的元数据(其元数据配置)彼此独立。如果您计划以SOAP Web服务的身份访问服务(使用配置了WsHttpBinding的端点),将元数据公开为WSDL(使用'httpGetEnabled =“true”'和'httpGetUrl')是有意义的,在没有其他的情况下使用。 – 2011-04-15 14:56:56

+0

那么为什么除去以下两行之后: - <端点地址= “MEX” 结合= “mexBasicHttpBinding” 合同= “IMetadataExchange接口”/> 为什么它不容许我在客户端应用程序中提供参考(我不想将它用作web服务) 我觉得暴露的ServiceMetadata是与WCF通信相关的某个地方。由于没有元数据,客户端无法建立通信。由于客户端应用程序必须知道服务的类型和其他组件才能建立与元数据可能的通信 – 2011-04-18 07:10:14

相关问题