Получение AddressAlreadyInUseException после обновления до .NET 4.5
Я недавно установил новый .NET Framework 4.5 (ранее был 4.0 установлен) на моем сервере, и я получаюSystem.ServiceModel.AddressAlreadyInUseException
когда я запускаю свою службу Windows, которая предоставляет конечные точки WCF.
System.ServiceModel.AddressAlreadyInUseException: на конечной точке IP уже есть прослушиватель 0.0.0.0:56543. Это может произойти, если другое приложение уже прослушивает эту конечную точку или если на хосте службы имеется несколько конечных точек службы с одинаковой конечной точкой IP, но с несовместимыми конфигурациями привязки. ---> System.Net.Sockets.SocketException: только одно использование каждого адреса сокета (протокол / сетевой адрес / порт) обычно разрешено в System.Net.Sockets.Socket.DoBind (EndPoint endPointSnapshot, SocketAddress socketAddress) в System. Net.Sockets.Socket.Bind (EndPoint localEP) в System.ServiceModel.Channels.SocketConnectionListener.Listen () --- Конец внутренней трассировки стека исключений --- в System.ServiceModel.Channels.SocketConnectionListener.Listen () в System. ServiceModel.Channels.BufferedConnectionListener.Listen () в System.ServiceModel.Channels.ExclusiveTcpTransportManager.OnOpen ()
на System.ServiceModel.Channels.TransportManager.Open (TransportChannelListener channelListener) при System.ServiceModel.Channels.TransportManagerContainer.Open (SelectTransportManagersCallback selectTransportManagerCallback) в System.ServiceModel.Channels.TransportChannelListener.OnOpen (TimeSpan тайм-аута) в System.ServiceModel.Channels.ConnectionOrientedTransportChannelListener .OnOpen (Тайм-аут TimeSpan) в System.ServiceModel.Channels.TcpChannelListener`2.OnOpen (Тайм-аут TimeSpan) в System.ServiceModel.Channels.CommunicationObject.Open (Тайм-аут TimeSpan) в System.ServiceModel.Dispatcher.OnDpanpatOpenShannel в System.ServiceModel.Channels.CommunicationObject.Open (тайм-аут TimeSpan) в System.ServiceModel.ServiceHostBase.OnOpen (тайм-аут TimeSpan) в System.ServiceModel.Channels.CommunicationObject.Open (тайм-аут TimeSpan.Source.OnerSerInSerInSerInSerInSerInSerInSnInF) [] args)
Конфигурация моих конечных точек WCF выглядит так:
<system.serviceModel>
<bindings>
<netTcpBinding>
<binding name="NetTcpBindingConfiguration" closeTimeout="00:01:00" openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00" transactionFlow="false" transferMode="Buffered" transactionProtocol="OleTransactions" hostNameComparisonMode="StrongWildcard" listenBacklog="10" maxBufferPoolSize="524288" maxBufferSize="65536" maxConnections="10" maxReceivedMessageSize="65536">
<readerQuotas maxDepth="32" maxStringContentLength="5242880" maxArrayLength="16384" maxBytesPerRead="4096" maxNameTableCharCount="16384" />
<reliableSession ordered="true" inactivityTimeout="00:10:00" enabled="false" />
</binding>
</netTcpBinding>
</bindings>
<behaviors>
<serviceBehaviors>
<behavior name="">
<serviceDebug includeExceptionDetailInFaults="true" />
</behavior>
<behavior name="MEX">
<serviceMetadata/>
</behavior>
</serviceBehaviors>
</behaviors>
<services>
<service behaviorConfiguration="MEX" name="MyAssembly.MyNamespace.MyService">
<endpoint address="net.tcp://localhost:56543/MyService"
binding="netTcpBinding" bindingConfiguration="NetTcpBindingConfiguration" contract="MyAssembly.MyNamespace.MyServiceInterface" />
<endpoint address="net.tcp://localhost:56543/MEX" binding="mexTcpBinding"
contract="IMetadataExchange" />
</service>
</services>
</system.serviceModel>
Я думаю, что это как-то связано с конечной точкой MEX, которая использует тот же порт, но я не уверен, как правильно настроить его после обновления до .NET Framework 4.5.
Произошло ли изменение в WCF, чтобы эта конфигурация вызвала исключение?