Проблемы развертывания размещенной службы WCF в службе Windows - PullRequest
0 голосов
/ 02 июля 2018

У меня есть служба 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...