在寄宿到控制台的WCF服务启动时或者运行期间,经常自己停掉,通过日志记录可以看到
2010/10/27 10:19:08 : There is already a listener on IP endpoint 0.0.0.0:4503. Make sure that you are not trying to use this endpoint multiple times in your application and that there are no other applications listening on this endpoint.
应该是同一个端口被多个服务监听了,查了一下服务的配置,果然如此
代码
<
service
behaviorConfiguration
="WCFService.Behavior"
name
="WCFService.SynchronizationService"
>
< host >
< baseAddresses >
< add baseAddress ="net.tcp://localhost:4503/SynchronizationService" />
</ baseAddresses >
</ host >
< endpoint address ="" binding ="netTcpBinding" contract ="WCFService.ISynchronizationService" bindingConfiguration ="netTcpBindConfig" ></ endpoint >
< endpoint address ="mex" binding ="mexTcpBinding" contract ="IMetadataExchange" ></ endpoint >
</ service >
< service behaviorConfiguration ="WCFService.Behavior" name ="AuthenticateService" >
< host >
< baseAddresses >
< add baseAddress ="net.tcp://localhost:4503/AuthenticateService" />
</ baseAddresses >
</ host >
< endpoint address ="" binding ="netTcpBinding" contract ="IAuthenticateService" bindingConfiguration ="netTcpBindConfig" ></ endpoint >
< endpoint address ="mex" binding ="mexTcpBinding" contract ="IMetadataExchange" ></ endpoint >
</ service >
< host >
< baseAddresses >
< add baseAddress ="net.tcp://localhost:4503/SynchronizationService" />
</ baseAddresses >
</ host >
< endpoint address ="" binding ="netTcpBinding" contract ="WCFService.ISynchronizationService" bindingConfiguration ="netTcpBindConfig" ></ endpoint >
< endpoint address ="mex" binding ="mexTcpBinding" contract ="IMetadataExchange" ></ endpoint >
</ service >
< service behaviorConfiguration ="WCFService.Behavior" name ="AuthenticateService" >
< host >
< baseAddresses >
< add baseAddress ="net.tcp://localhost:4503/AuthenticateService" />
</ baseAddresses >
</ host >
< endpoint address ="" binding ="netTcpBinding" contract ="IAuthenticateService" bindingConfiguration ="netTcpBindConfig" ></ endpoint >
< endpoint address ="mex" binding ="mexTcpBinding" contract ="IMetadataExchange" ></ endpoint >
</ service >
于是将其中一个服务的端口改掉成4504即可。
为了保证端口的唯一性,首先这个端口不能是常见的系统端口,其次不能是其他服务所用的端口。
本文转自wengyuli 51CTO博客,原文链接:http://blog.51cto.com/wengyuli/586702,如需转载请自行联系原作者