Как включить обнаружение служб WCF при использовании активации без файлов?

Привет, ребята,

Как я могу включить обнаружение службы при использовании безфайловой активации службы WCF? При таком подходе кажется невозможным указать явные типы конечных точек или поведение Configuration?

Моя текущая попытка заключается в следующем, но обнаружение службы все еще не работает:

<bindings>
  <wsHttpBinding>
    <binding name="Default" transactionFlow="true">
      <security mode="Transport">
        <transport clientCredentialType="None">
        </transport>
      </security>
    </binding>
  </wsHttpBinding>
</bindings>

<protocolMapping>
  <clear/>
  <add scheme="https" binding="wsHttpBinding" bindingConfiguration="Default" />
</protocolMapping>

<behaviors>
  <serviceBehaviors>
    <behavior>
      <serviceMetadata httpGetEnabled="true"/>
      <serviceDebug includeExceptionDetailInFaults="true"/>
      <serviceDiscovery/>
    </behavior>
  </serviceBehaviors>

  <endpointBehaviors>
    <behavior>
      <endpointDiscovery enabled="true">
        <scopes>
          <add scope="http://XPS/MvcApplication/Service/"/>
        </scopes>
      </endpointDiscovery>
    </behavior>
  </endpointBehaviors>
</behaviors>

<serviceHostingEnvironment multipleSiteBindingsEnabled="true">
  <serviceActivations>
    <add service="RegistrationService" factory="Core.ServiceModel.Activation.ServiceHostFactory" relativeAddress="RegistrationService.svc" />
    <add service="EventService" factory="Core.ServiceModel.Activation.ServiceHostFactory" relativeAddress="EventService.svc" />
    <add service="ShoppingService" factory="Core.ServiceModel.Activation.ServiceHostFactory" relativeAddress="ShoppingService.svc" />
  </serviceActivations>
</serviceHostingEnvironment>

2 ответа

Этот вопрос годовалый, но ради других, у кого может возникнуть этот вопрос, вот ответ:

Несмотря на то, что вы используете активацию без файлов WCF, вам все равно services узел в вашем system.serviceModel раздел конфигурации, потому что вам необходимо явно добавить конечную точку обнаружения к каждой службе, которую вы хотите сделать доступной для обнаружения.

<services>
  <service name="RegistrationService">
    <endpoint binding="wsHttpBinding" contract="IRegistrationService"/>
    <endpoint kind="udpDiscoveryEndpoint"/>
  </service>
</services>

Приведенный выше фрагмент конфигурации добавит конечную точку обнаружения к вашему RegistrationService (я предполагаю, что у вас есть явный контракт на обслуживание с именем IRegistrationService).

Также обратите внимание, что с добавлением узла конфигурации сервиса для RegistrationService вам нужно будет явно добавить любые конечные точки данных.

Попробуйте добавить это в web.config.

<behaviors>
  <serviceBehaviors>
    <behavior name="">
      <serviceMetadata httpGetEnabled="True"/>
      <serviceDebug includeExceptionDetailInFaults="False"/>
    </behavior>
  </serviceBehaviors>
</behaviors>
Другие вопросы по тегам