Wcf 在web.config的单独部分中配置MEX和服务

Wcf 在web.config的单独部分中配置MEX和服务,wcf,Wcf,我有一个基本问题——我们能假设两种配置做相同的事情吗 web.config一 <service behaviorConfiguration="endpointBehavior" name="mYwebSrv.mYDevice"> <endpoint address="" binding="basicHttpBinding" contract="mYwebSrv.ImYDevice"></endpoint> </service>

我有一个基本问题——我们能假设两种配置做相同的事情吗

web.config一

<service behaviorConfiguration="endpointBehavior" name="mYwebSrv.mYDevice">
            <endpoint address="" binding="basicHttpBinding" contract="mYwebSrv.ImYDevice"></endpoint>
</service>

<service behaviorConfiguration="endpointBehavior" name="mYwebSrv.mYDevice">
            <endpoint address="mex" binding="mexHttpBinding" bindingConfiguration="" contract="IMetadataExchange" />
</service>

web.config二

<service behaviorConfiguration="endpointBehavior" name="mYwebSrv.mYDevice">
            <endpoint address="" binding="basicHttpBinding" contract="mYwebSrv.ImYDevice"></endpoint>
            <endpoint address="mex" binding="mexHttpBinding" bindingConfiguration="" contract="IMetadataExchange" />
</service>

不完全是这样。 由于您在Web.config中声明了一个新服务,因此这两个服务(endpointBehavior和name)的密钥不能相同

由于您希望向您的服务公开一个端点,并为同一服务公开一个端点,但要公开元数据(mex),因此将两者放在同一服务下是有意义的,这是Microsoft建议的,请参见此处:


希望能有帮助

<service
      name="Metadata.Example.SimpleService"
      behaviorConfiguration="SimpleServiceBehavior">

    <endpoint address=""
              binding="wsHttpBinding"
              contract="Metadata.Example.ISimpleService" />

    <endpoint address="mex"
              binding="mexHttpBinding"
              contract="IMetadataExchange" />
  </service>