Как включить обнаружение службы WCF при использовании активации без файлов? - PullRequest
2 голосов
/ 02 октября 2010

Добрый день, ребята,

Как мне разрешить обнаружение службы при использовании безфайловой активации службы 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 ]

0 голосов
/ 16 января 2012

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

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

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

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

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

0 голосов
/ 23 декабря 2010

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

<behaviors>
  <serviceBehaviors>
    <behavior name="">
      <serviceMetadata httpGetEnabled="True"/>
      <serviceDebug includeExceptionDetailInFaults="False"/>
    </behavior>
  </serviceBehaviors>
</behaviors>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...