没有端点上的net.tcp
问题描述:
服务配置监听错误没有端点上的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"
TCP服务正在运行,防火墙是关闭的。不知道有什么缺失。
答
你实际服务是在听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
是元数据交换地址 - 不是您的服务。客户端需要使用此端点来询问服务,以了解它提供的服务方法类型,它期望的参数等等 - 需要创建客户端代理代码的所有内容。但是,这是不是服务地址,您的实际服务所在地和响应请求。
如果我使用端点net.tcp:// localhost:9000/Services/MyService – Suedeuno 2012-02-23 16:53:03
,我会得到基本相同的消息请参阅我的回复 - 创建绑定时可能还需要更改为TransferMode.Buffered(除非'TcpCOnfig'绑定配置 - 你**没有在你的帖子中显示** - 将建立流式传输模式) – 2012-02-23 16:55:47
你能告诉我们''你的服务器端配置的一部分,请?? –
2012-02-23 17:15:36