1、原理
WCF中的元数据是精确描述如何与服务通信的消息。客户端可以向一个运行的服务请求元数据来了解它们要求的终结点和消息格式。在设计时,客户端发送由WS-MetadataExchange 标准定义的消息并接收返回的WSDL。WSDL可以被客户端用来定义一个将要用来在运行时与服务通信的代理类和配置文件,默认情况下,WCF服务不暴露MEX终结点
2、代码申明
ServiceHost serviceHost =
new
ServiceHost(
typeof
(StockService),
new
Uri(
"http://localhost:8000/EssentialWCF"
));
serviceHost.AddServiceEndpoint(
typeof
(IStockService),
new
BasicHttpBinding(),
""
);
ServiceMetadataBehavior behavior =
new
ServiceMetadataBehavior();
behavior.HttpGetEnabled =
true
;
serviceHost.Description.Behaviors.Add(behavior);
serviceHost.AddServiceEndpoint(
typeof
(IMetadataExchange), MetadataExchangeBindings.CreateMexHttpBinding(),
"mex"
);
serviceHost.Open();
3、配置文件中申明
<?
xml
version
=
"1.0"
encoding
=
"utf-8"
?>
<
configuration
>
<
system.servicemodel
>
<
services
>
<
service
name
=
"EssentialWCF.StockService"
behaviorConfiguration
=
"myServiceBehavior"
>
<
host
>
<
baseaddresses
>
</
baseaddresses
>
</
host
>
<
endpoint
address
=
""
binding
=
"basicHttpBinding"
contract
=
"EssentialWCF.IStockService"
/>
<
endpoint
address
=
"mex"
binding
=
"mexHttpBinding"
contract
=
"IMetadataExchange"
/>
</
service
>
</
services
>
<
behaviors
>
<
serviceBehaviors
>
<
behavior
name
=
"myServiceBehavior"
>
<
serviceMetadata
httpGetEnabled
=
"True"
/>
</
behavior
>
</
serviceBehaviors
>
</
behaviors
>
</
system.servicemodel
>
</
configuration
>