У меня есть служба WCF, которую я размещаю в службе Windows. Служба хоста Windows имеет файл App.config для использования конечной точки службы, а служба имеет файл App.config, который предоставляет конечные точки метаданных. Когда служба развернута через систему разработки VS, все это прекрасно работает. При загруженном веб-браузере URL-адрес http://localhost:9001/ преобразуется в веб-страницу метаданных, отображающую ссылку wsdl для службы. Он даже работает с тестовым клиентом WCF, и я могу отправлять служебные сообщения, и он отвечает.
Однако, если ProjectInstaller загружен в размещенную службу в VS и развернут вне системы разработки VS, я больше не могу получить доступ к конечной точке метаданных http://localhost:9001/, когда размещенная служба развернута в Windows. Служба запущена и работает, но конечная точка не отвечает. Служба развертывается из папки отладки с помощью команды «sc create binpath =« Service.exe »start = auto». Возможно, это не правильный способ его развертывания, не уверен, или, может быть, мои файлы app.Config неверны или на них ссылаются правильно. Может кто-нибудь сообщить мне процесс для этого и, возможно, проверить, что мои файлы app.Config являются правильными как для хоста Windows, так и для стороны службы. Это довольно сложно настроить, поэтому любая помощь приветствуется.
Служба хоста окна App.config для использования конечных точек:
<system.serviceModel>
<client>
</client>
<bindings>
<basicHttpBinding>
<binding name="basicHttpBinding_WindowsService" maxReceivedMessageSize="20000000" />
</basicHttpBinding>
</bindings>
<services>
<!-- Service endpoint to consume -->
<service name="WindowsService.Service">
<endpoint address="http://localhost:9001/Service" binding="basicHttpBinding"
contract="WindowsService.IService" />
</service>
</services>
<protocolMapping>
<add binding="basicHttpsBinding" scheme="https"/>
</protocolMapping>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true"/>
</system.serviceModel>
Служба Web.config для предоставления конечных точек:
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="basicHttpBinding_WindowsService" />
</basicHttpBinding>
</bindings>
<behaviors>
<serviceBehaviors>
<behavior name="defaultbehavior">
<serviceMetadata httpGetEnabled="true" httpsGetEnabled="true"/>
<serviceDebug includeExceptionDetailInFaults="false"/>
</behavior>
</serviceBehaviors>
</behaviors>
<services>
<service behaviorConfiguration="defaultbehavior" name="WindowsService.Service">
<!-- Base address for exposing Metadata and Service -->
<host>
<baseAddresses>
<add baseAddress="http://localhost:9001/" />
</baseAddresses>
</host>
<!-- Metadata service endpoint to expose -->
<endpoint address="" binding="mexHttpBinding" contract="IMetadataExchange" />
<!-- Service contract endpoint to expose -->
<endpoint address="Service" binding="basicHttpBinding" contract="WindowsService.IService" />
</service>
</services>
<protocolMapping>
<add binding="basicHttpsBinding" scheme="https"/>
</protocolMapping>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true"/>
</system.serviceModel>