2012-03-15 2 views
1

У меня есть проект Wcf Service. system.serviceModel тега в моем web.config является:Не удалось найти базовый адрес, соответствующий схеме net.tcp для конечной точки

<system.serviceModel> 
    <bindings> 
     <netTcpBinding> 
     <binding name="RCISPNetTcpBinding" openTimeout="00:10:00" sendTimeout="00:10:00"> 
      <security mode="Transport"> 
      <transport clientCredentialType="Windows" protectionLevel="EncryptAndSign"> 
      </transport> 
      <message clientCredentialType="Windows"/> 
      </security> 
     </binding> 
     </netTcpBinding> 
    </bindings> 

    <services> 
     <service behaviorConfiguration="RCISP.WcfServiceBehaviour" name="RCISP.WcfService.PersonWcfService"> 
     <endpoint address="PersonServices" binding="netTcpBinding" bindingConfiguration="RCISPNetTcpBinding" 
      contract="RCISP.Common.ServiceContract.IPersonService" > 
      <identity> 
      <dns value="localhost" /> 
      </identity> 
     </endpoint> 
     <host> 
      <baseAddresses> 
      <add baseAddress="net.tcp://localhost:40003/"/> 
      </baseAddresses> 
     </host> 
     </service> 
    </services> 

    <behaviors> 
     <serviceBehaviors> 
     <behavior name="RCISP.WcfServiceBehaviour"> 
      <serviceMetadata httpGetEnabled="false" /> 
      <serviceDebug includeExceptionDetailInFaults="false" /> 
      <serviceAuthorization principalPermissionMode="UseWindowsGroups" /> 
     </behavior> 
     </serviceBehaviors> 
    </behaviors> 
    </system.serviceModel> 

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

public class ServiceFactory : ServiceHostFactory 
    { 
     protected override ServiceHost CreateServiceHost(Type serviceType, Uri[] baseAddresses) 
     { 
      if (!IsInitialised) InitialiseService(); 
      return base.CreateServiceHost(serviceType, baseAddresses); 
     } 

    } 

Сообщение об исключении:

Could not find a base address that matches scheme net.tcp for the endpoint with binding NetTcpBinding. Registered base address schemes are [http].

Почему?

+0

Заканчивать http://stackoverflow.com/questions/1793119/can-not-find-a-base-address-that-matches-scheme-net-tcp –

+0

@wise_guybg: Я прочитал этот вопрос, но моя проблема не была решена. – Ehsan

ответ

1

Вам необходимо добавить сопоставление протокола в файл конфигурации, чтобы сообщить ему, что такое протокол net.tcp. Сразу же после вашего <bindings> раздела добавьте это:

<protocolMapping> 
    <add scheme="net.tcp" binding="netTcpbinding"/> 
</protocolMapping>  
+0

Я добавляю его, но проблема не решена. – Ehsan

2

Вы сказали, что вы самостоятельно хостинг услуги (в пределах вашего собственного процесса), но на основе кода выше, я думаю, что вы пытаетесь разместить его внутри веб-приложения. Если это так, веб-сервер Visual Studio не может принимать конечную точку net.tcp. Вам нужно настроить запуск проекта под IIS. Следуйте инструкциям here.

Если вы действительно самостоятельно хостинг, чем вы можете оставить конфигурацию, как именно вы его и раскрутить услугу, используя следующий код:

var host = new ServiceHost(typeof(Service1)); 
host.Open(); 
Смежные вопросы

 Смежные вопросы