Имя службы WCF и имя привязки - PullRequest
5 голосов
/ 06 апреля 2010

Сценарий

У меня есть две службы WCF, объединенные в один файл App.Config. Я не могу заставить его работать (приложение компилируется, но происходит сбой при инициализации служб).

Вопрос

Мне интересно, нужно ли мне устанавливать имя службы таким же, как и что-то еще, что также определяется как часть службы в целом?

ERROR

TypeInitializationException

{"Служба 'MurexUploadObjects.ResponseService' имеет нулевые конечные точки приложения (не инфраструктуры). Это может быть связано с тем, что для вашего приложения не найден файл конфигурации, или потому что в файле конфигурации не найден элемент службы, соответствующий имени службы или потому что в элементе службы не определены конечные точки. "}

код

<system.serviceModel>
<configuration>

<behaviors>
 <serviceBehaviors>
   <behavior name="Service1Bevhavior">
   </behavior>
   <behavior name="Service2Bevhavior">
   </behavior>
   </serviceBehaviors>
  </behaviors>

   <bindings>
    <netTcpBinding>
      <binding name="tcpBloombergServiceEndPoint" closeTimeout="00:01:00"
          openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
          transactionFlow="false" transferMode="Buffered" transactionProtocol="OleTransactions"
          hostNameComparisonMode="StrongWildcard" listenBacklog="10" maxBufferPoolSize="524288"
          maxBufferSize="65536" maxConnections="10" maxReceivedMessageSize="65536">
       <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
      maxBytesPerRead="4096" maxNameTableCharCount="16384" />
       <reliableSession ordered="true" inactivityTimeout="00:05:00"
      enabled="true" />
       <security mode="None">
       <transport clientCredentialType="Windows" protectionLevel="EncryptAndSign" />
       <message clientCredentialType="Windows" />
       </security>
     </binding>

     <binding name="TransactedBinding">
     <security mode="None" />
     </binding>

   </netTcpBinding>
   </bindings>

 <services>

 <!--SERVICE ONE-->
 <service name="INSERT NAME HERE">
   <endpoint address="net.tcp://AP434190:8732/BloombergService/"
binding="netTcpBinding"
contract="BloomberPriceListenerService.IBloombergPriceListenerService"
bindingConfiguration="tcpBloombergServiceEndPoint"
name="tcpBloombergServiceEndPoint" />
 </service>

 <!--SERVICE TWO-->
 <service name="INSERT NAME HERE">
   <endpoint address="net.tcp://localhost:8735/private/MurexUploadObjects/ResponseService"
               binding="netTcpBinding"
               contract="MurexUploadObjects.IResponseService"
               bindingConfiguration="TransactedBinding"
               name="TransactedBinding"/>
   </service>
 </services>   

</system.serviceModel>  
</configuration>

1 Ответ

32 голосов
/ 06 апреля 2010

Имя службы должно быть полным именем вашего класса обслуживания, включая пространство имен, например,

<service name="YourServiceNamespace.YourService"> 

Это не может быть что угодно - имя класса обслуживания используется ServiceHost для поиска правильной конфигурации службы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...