2012-02-23 2 views
1

конфигурации службыНет конечной точки прослушивания ошибку на net.tcp

<service name="Services.MyService"> 
    <host> 
     <baseAddresses> 
     <add baseAddress="net.tcp://localhost:9000/Services/MyService/" /> 
     </baseAddresses> 
    </host> 
    <endpoint name="NetTcpService" 
     address="" 
     binding="netTcpBinding" 
     bindingConfiguration="TcpConfig" 
     contract="Service.IMyService" /> 
    <endpoint 
     address="mex" 
     binding="mexTcpBinding" bindingConfiguration="TcpConfig" 
     contract="IMetadataExchange" /> 
    </service> 

код клиента:

var endPoint = new EndpointAddress("net.tcp://localhost:9000/Services/MyService/mex"); 
var binding = new NetTcpBinding { TransferMode = TransferMode.Streamed, SendTimeout = TimeSpan.MaxValue }; 
var channel = new ChannelFactory<IMyService>(binding, endPoint); 
var proxy = channel.CreateChannel(); 

Ошибка:

No Endpoint listening at "net.tcp://localhost/Services/MyService/mex"

ТСР службы запущены, брандмауэр не выключен. Не уверен, чего не хватает.

+0

Я получаю в основном одно и то же сообщение, если я использую конечную точку net.tcp: // localhost: 9000/Services/MyService – Suedeuno

+0

См. Мой ответ - возможно, вам также необходимо изменить на 'TransferMode.Buffered' при создании привязки (если только это «Конфигурация привязки TcpCOnfig», которую вы ** не указали ** в своем сообщении ...... - настроил бы потоковый режим передачи) –

+0

Можете ли вы показать нам часть вашей серверной конфигурации '', пожалуйста?? –

ответ

3

Ваш фактическое сервис слушает на net.tcp://localhost:9000/Services/MyService/ - поэтому постарайтесь изменить свой код, чтобы выглядеть следующим образом:

var endPoint = new EndpointAddress("net.tcp://localhost:9000/Services/MyService/"); 
var binding = new NetTcpBinding { TransferMode = TransferMode.Buffered, SendTimeout = TimeSpan.MaxValue }; 
var channel = new ChannelFactory<IMyService>(binding, endPoint); 
var proxy = channel.CreateChannel(); 

Помимо изменения адреса, а также использовать TransferMode.Buffered (вместо Streamed), который по умолчанию - Я не вижу никакой конфигурации в вашей конфигурации на стороне сервера, которая указывает на то, что вы используете режим потоковой передачи.

Адрес net.tcp://localhost:9000/Services/MyService/mex является обмен метаданными адрес - не ваше обслуживание. Эта конечная точка необходима для того, чтобы ваши клиенты могли допросить службу, чтобы узнать, какой метод обслуживания он предлагает, какие параметры он ожидает и т. Д. - все, что необходимо для создания прокси-кода на стороне клиента. Но это NOT адрес службы, в котором ваш фактический срок службы и отвечает на запросы.

+0

Добавлен transferMode в конфигурацию службы и указанная конечная точка клиента в net.tcp: // localhost : 9000/Services/MyService и все еще получил то же сообщение – Suedeuno

+0

@Suedeuno: как вы ** принимаете ** свой сервис WCF? Самостоятельное размещение в приложении или размещение внутри IIS? –

+0

Этот сервис является самостоятельным – Suedeuno