Как включить обнаружение служб 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>