【发布时间】:2012-03-16 21:21:34
【问题描述】:
我正在尝试找出为什么即使在重新启动计算机后端口仍在使用!
System.ServiceModel.AddressAlreadyInUseException:IP 端点 0.0.0.0:13000 上已经有一个侦听器。如果有另一个应用程序已经在侦听此端点,或者您的服务主机中有多个服务端点具有相同的 IP 端点但绑定配置不兼容,则可能会发生这种情况。 ---> System.Net.Sockets.SocketException: 每个套接字地址(协议/网络地址/端口)通常只允许使用一次 在 System.Net.Sockets.Socket.DoBind(端点 endPointSnapshot,SocketAddress socketAddress) 在 System.Net.Sockets.Socket.Bind(端点 localEP) 在 System.ServiceModel.Channels.SocketConnectionListener.Listen() --- 内部异常堆栈跟踪结束 --- 在 System.ServiceModel.Channels.SocketConnectionListener.Listen() 在 System.ServiceModel.Channels.TracingConnectionListener.Listen() 在 System.ServiceModel.Channels.ConnectionAcceptor.StartAccepting() 在 System.ServiceModel.Channels.ExclusiveTcpTransportManager.OnOpen() 在 System.ServiceModel.Channels.TransportManager.Open(TransportChannelListener channelListener) 在 System.ServiceModel.Channels.TransportManagerContainer.Open(SelectTransportManagersCallback 选择TransportManagerCallback) 在 System.ServiceModel.Channels.TcpChannelListener`2.OnOpen(时间跨度超时) 在 System.ServiceModel.Channels.CommunicationObject.Open(时间跨度超时) 在 System.ServiceModel.Dispatcher.ChannelDispatcher.OnOpen(时间跨度超时) 在 System.ServiceModel.Channels.CommunicationObject.Open(时间跨度超时) 在 System.ServiceModel.ServiceHostBase.OnOpen(时间跨度超时) 在 System.ServiceModel.Channels.CommunicationObject.Open(时间跨度超时) 在 Microsoft.Tools.SvcHost.ServiceHostHelper.OpenService(ServiceInfo 信息) System.Net.Sockets.SocketException (0x80004005):每个套接字地址(协议/网络地址/端口)通常只允许使用一次 在 System.Net.Sockets.Socket.DoBind(端点 endPointSnapshot,SocketAddress socketAddress) 在 System.Net.Sockets.Socket.Bind(端点 localEP) 在 System.ServiceModel.Channels.SocketConnectionListener.Listen()
您如何确定哪个进程正在侦听该端口 (13000)? Netstat 在该端口上没有显示任何内容。
这是我的 App.config:
<system.web>
<compilation debug="true" />
</system.web>
<!-- When deploying the service library project, the content of the config file must be added to the host's
app.config file. System.Configuration does not support config files for libraries. -->
<system.serviceModel>
<services>
<service name="SomeTarget.SomeTargetService">
<endpoint address="" binding="customBinding" bindingConfiguration="NetTcpBinding"
contract="SomeTarget.ISomeTargetService">
<identity>
<dns value="localhost" />
</identity>
</endpoint>
<endpoint address="mex" binding="mexTcpBinding" bindingConfiguration=""
contract="IMetadataExchange" />
<host>
<baseAddresses>
<add baseAddress="net.tcp://localhost:13000" />
</baseAddresses>
</host>
</service>
</services>
<bindings>
<customBinding>
<binding name="NetTcpBinding" sendTimeout="00:05:00" closeTimeout="00:00:30" openTimeout="00:00:30" receiveTimeout="00:05:00">
<transactionFlow />
<binaryMessageEncoding />
<windowsStreamSecurity protectionLevel="None" />
<tcpTransport maxBufferPoolSize="524288"
maxReceivedMessageSize="1024"
maxBufferSize="1024" >
<connectionPoolSettings groupName="default" leaseTimeout="00:05:00"
idleTimeout="00:02:00" maxOutboundConnectionsPerEndpoint="20" />
</tcpTransport>
</binding>
</customBinding>
</bindings>
<behaviors>
<serviceBehaviors>
<behavior name="">
<serviceMetadata httpGetEnabled="false" httpsGetEnabled="false" />
<serviceDebug includeExceptionDetailInFaults="false" />
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
</configuration>
【问题讨论】:
-
防火墙不应该给你一个 AddressAlreadyInUseException。
-
我也遇到了这个问题。我已经尝试更改端口,但没有任何效果。
-
看起来这个 Q 已经过时了。你解决了这个问题了吗?