Потоковая служба — netTCPBinding — служба создается, устанавливается, но не запускается

У меня есть служба WCF, которая использует netTcpBinding, transferMode="Streamed" и устанавливается с помощью installutil с помощью метода Windows Process Activation Services. Служба строится и устанавливается просто отлично. У меня есть все необходимые права для СЕТЕВЫХ СЛУЖБ в содержащей папке для доступа к файлу .exe. Моя проблема в том, что я продолжаю получать ошибку:

«Служба [ServiceName] на локальном компьютере запущена, а затем остановлена. Некоторые службы автоматически останавливаются, если они не используются другими службами или программами».

Что странно, так это то, что код установщика хоста такой же, как у буферизованной службы, которая работает нормально. В потоковом сервисе я учитывал передачу потоков и сообщений там, где это необходимо. Я застрял. Кажется, я не могу понять, почему этот сервис не встанет. Порты проверил, открыты (конфликта нет). Есть ли у кого-нибудь совет по поводу того, что не запускаются службы Streamed netTcp?

Ниже показано, как выглядит App.Config:

<system.serviceModel>
    <!--### Service Endpoints: ###-->
    <!--Define Bindings-->
    <bindings>
      <netTcpBinding>
        <binding name="netTcpStreamedBinding" closeTimeout="00:01:00" openTimeout="00:01:00"
            receiveTimeout="00:20:00" sendTimeout="00:10:00"
            transferMode="Streamed" maxBufferPoolSize="104857600"
            maxReceivedMessageSize="1073741824" maxBufferSize="262144">

    <!-- Commented below out to match service that worked to see if this was error - It is not the problem (still no start)
        <security mode="Transport">
            <transport clientCredentialType="Windows" protectionLevel="EncryptAndSign" />
            <message clientCredentialType="Windows" />
          </security>-->

        </binding>
      </netTcpBinding>
    </bindings>

      <!--Streamer Service-->
    <services>
      <service name="MyServiceLib.FileStreamer">
        <endpoint address="" binding="netTcpBinding" bindingConfiguration="netTcpStreamedBinding" contract="MyServiceLib.IFileStreamer">
          <identity>
            <dns value="localhost"/>
          </identity>
        </endpoint>
        <host>
          <baseAddresses>
            <add baseAddress="net.tcp://localhost:.../MyStreamerService"/>
          </baseAddresses>
        </host>
      </service>
    </services>

    <behaviors>
      <serviceBehaviors>
        <behavior>
          <!-- To avoid disclosing metadata information, 
          set the values below to false before deployment -->
          <serviceMetadata httpGetEnabled="False" httpsGetEnabled="False"/>
          <!-- To receive exception details in faults for debugging purposes, 
          set the value below to true.  Set to false before deployment 
          to avoid disclosing exception information -->
          <serviceDebug includeExceptionDetailInFaults="False" />
        </behavior>
      </serviceBehaviors>
    </behaviors>

  </system.serviceModel>

person Zack Jannsen    schedule 24.10.2013    source источник
comment
Один момент, который следует учитывать, заключается в том, что я использую DirectorySecurity при создании каталогов в операциях размещения/загрузки. Однако аналогичный буферизованный сервис делает то же самое и запускается нормально.   -  person Zack Jannsen    schedule 24.10.2013


Ответы (1)


Похоже, даже с помощью Visual Studio 2012 я столкнулся с этой ошибкой (первоначально опубликованной для VS 2010):

Ошибка 571961 (помечена как закрытая) - "Невозможно скопировать файл"

Эта ошибка вызывает ошибку «Невозможно скопировать файл..., потому что он используется другим процессом». Обходной путь сработал для меня - очистить проект. Закройте Visual Studio. Снова откройте VS. Создайте проект. Следование этому процессу позволило мне создать свой сервис.

Кроме того, при повторных сборках отчасти проблема заключалась в необходимости «остановить» службу в диспетчере служб перед сборкой. обязательно не забывайте об этом.

person Zack Jannsen    schedule 29.10.2013