2011-01-27 19 views
1

Я пытаюсь настроить службу WCF использовать net.tcp через IIS 7.Как настроить WCF Net.Tcp

Здесь ошибка я получаю:

Там не было конечной точкой прослушивания на net.tcp: //127.0.0.1: 8000/ListingService , который может принять сообщение. Это часто вызвано неправильным адресом или действием SOAP. См. InnerException, если присутствует, для получения более подробной информации.

Вот код, который я называю от клиента:

using (var client = new ListingServiceClient("NetTcpBinding")) 
{ 
    client.Test(); 
    client.Close(); 
} 

Вот моя услуга web.config - http://pastebin.com/3S8BZbup

<system.serviceModel> 
    <bindings> 
     <netTcpBinding> 
     <binding portSharingEnabled="true"> 
      <security mode="None" /> 
     </binding> 
     </netTcpBinding> 
    </bindings> 
    <behaviors> 
     <serviceBehaviors> 
     <behavior name="default"> 
      <serviceMetadata httpGetEnabled="true"/> 
      <serviceDebug includeExceptionDetailInFaults="true"/> 
      <!--throttle service--> 
      <serviceThrottling 
      maxConcurrentCalls="10000" 
      maxConcurrentSessions="10000" 
      maxConcurrentInstances="10000" /> 
     </behavior> 
     </serviceBehaviors> 
    </behaviors> 
    <services> 
     <service behaviorConfiguration="default" name="Housters.Services.ListingService"> 
     <endpoint name="TcpEndpoint" 
        address="net.tcp://127.0.0.1:8000/ListingService" 
        binding="netTcpBinding" 
        contract="Housters.Services.IListingService" /> 
     </service> 
    </services> 
    <serviceHostingEnvironment multipleSiteBindingsEnabled="true" /> 
    </system.serviceModel> 
    <system.webServer> 
     <modules runAllManagedModulesForAllRequests="true"/> 
    </system.webServer> 

А вот мой клиент app.config - http://pastebin.com/YpiAhh46

<system.serviceModel> 
    <bindings> 
     <netTcpBinding> 
     <binding name="NetTcpBinding"> 
      <security mode="None"/> 
     </binding> 
     </netTcpBinding> 
    </bindings> 
    <client> 
     <endpoint 
       address="net.tcp://127.0.0.1:8000/ListingService" 
       binding="netTcpBinding" bindingConfiguration="NetTcpBinding" 
       contract="ListingServiceProxy.IListingService" name="NetTcpBinding" /> 
    </client> 
    </system.serviceModel> 

Любой идентификатор EAS?

+0

Следует также упомянуть, что я добавил net.tcp в протоколы с поддержкой iis и добавил привязку для net.tcp - «8000: *». – Justin

+0

Не уверен, что это проблема, но я заметил, что вы не устанавливаете свойство 'bindingConfiguration' в конечной точке« TcpEndpoint ». и у вас нет 'name', установленного в' netTcpBinding'. – vlad

+0

Мы смотрим на тот же код? На конечной точке tcp я устанавливаю bindingConfiguration: bindingConfiguration = "NetTcpBinding". Я также устанавливаю имя в netTcpBinding: . Дайте мне знать, если я не понимаю. – Justin

ответ

7

Эта конфигурация не работает в IIS/WAS. При размещении в IIS вам нужен файл .svc (или активация на основе конфигурации в WCF 4), а адрес конечной точки всегда является VirtualDirectoryPath + SvcFile + Относительный адрес, указанный в конфигурации конечных точек. Установка абсолютного адреса в конфигурации конечных точек для самостоятельного хостинга.

+0

a-HA !! благодаря! +1 – vlad

+0

что вы называете VirtualDirectoryPath? – Serge

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