Фос AddressAlreadyInUseException

Я уже просмотрел эти сообщения: система wcf.Средство servicemodel.AddressAlreadyInUseException, служба Windows размещала WCF через HTTPS, получение AddressAlreadyInUseException после обновления до .NET 4.5, ни одна из них не решит мою проблему. У меня есть несколько служб wcf в .net 4.5. Все они находятся по одному адресу, я получаю это исключение на хосте службы WCF:

System.ServiceModel.AddressAlreadyInUseException: HTTP could not register URL https://+:443/mafawcf01/ServicioAddin.svc/ because TCP port 443 is being used by another application. ---> System.Net.HttpListenerException: The process cannot access the file because it is being used by another process
   at System.Net.HttpListener.AddAllPrefixes()
   at System.Net.HttpListener.Start()
   at System.ServiceModel.Channels.SharedHttpTransportManager.OnOpen()
   --- End of inner exception stack trace ---
   at System.ServiceModel.Channels.SharedHttpTransportManager.OnOpen()
   at System.ServiceModel.Channels.TransportManager.Open(TransportChannelListener channelListener)
   at System.ServiceModel.Channels.TransportManagerContainer.Open(SelectTransportManagersCallback selectTransportManagerCallback)
   at System.ServiceModel.Channels.HttpChannelListener`1.OnOpen(TimeSpan timeout)
   at System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout)
   at System.ServiceModel.Channels.DatagramChannelDemuxer`2.OnOuterListenerOpen(ChannelDemuxerFilter filter, IChannelListener listener, TimeSpan timeout)
   at System.ServiceModel.Channels.SingletonChannelListener`3.OnOpen(TimeSpan timeout)
   at System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout)
   at System.ServiceModel.Security.SecurityListenerSettingsLifetimeManager.Open(TimeSpan timeout)
   at System.ServiceModel.Channels.SecurityChannelListener`1.OnOpen(TimeSpan timeout)
   at System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout)
   at System.ServiceModel.Dispatcher.ChannelDispatcher.OnOpen(TimeSpan timeout)
   at System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout)
   at System.ServiceModel.ServiceHostBase.OnOpen(TimeSpan timeout)
   at System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout)
   at System.ServiceModel.Security.SecuritySessionSecurityTokenAuthenticator.OnOpen(TimeSpan timeout)
   at System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout)
   at System.ServiceModel.Security.SecurityUtils.OpenTokenAuthenticatorIfRequired(SecurityTokenAuthenticator tokenAuthenticator, TimeSpan timeout)
   at System.ServiceModel.Security.SecuritySessionServerSettings.OnOpen(TimeSpan timeout)
   at System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout)
   at System.ServiceModel.Security.SecurityListenerSettingsLifetimeManager.Open(TimeSpan timeout)
   at System.ServiceModel.Channels.SecurityChannelListener`1.OnOpen(TimeSpan timeout)
   at System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout)
   at System.ServiceModel.Channels.DelegatingChannelListener`1.OnOpen(TimeSpan timeout)
   at System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout)
   at System.ServiceModel.Dispatcher.ChannelDispatcher.OnOpen(TimeSpan timeout)
   at System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout)
   at System.ServiceModel.ServiceHostBase.OnOpen(TimeSpan timeout)
   at System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout)
   at Microsoft.Tools.SvcHost.ServiceHostHelper.OpenService(ServiceInfo info)
System.Net.HttpListenerException (0x80004005): The process cannot access the file because it is being used by another process
   at System.Net.HttpListener.AddAllPrefixes()
   at System.Net.HttpListener.Start()
   at System.ServiceModel.Channels.SharedHttpTransportManager.OnOpen()

вот мое приложение.congif:

    <host>
      <baseAddresses>
        <add baseAddress="https://localhost:443/mafawcf01/ServicioAddin.svc"/>
      </baseAddresses>
    </host>
  </service>
  <service name="mafawcf01.ServicioPing" behaviorConfiguration="mafawcf01.ServicioPingBehavior">
    <endpoint address=""
              binding="basicHttpBinding"
              bindingConfiguration="secureHttpBinding"
              contract="mafawcf01.IServicioPing">
      <identity>
        <dns value="localhost" />
      </identity>
    </endpoint>
    <endpoint address="mex" binding="mexHttpsBinding" contract="IMetadataExchange" />
    <host>
      <baseAddresses>
        <add baseAddress="https://localhost:443/mafawcf01/ServicioPing.svc" />
      </baseAddresses>
    </host>
  </service>
  <service behaviorConfiguration="mafawcf01.Service1Behavior" name="mafawcf01.ServicioCargue">
    <endpoint address="https://localhost:443/MafaWCF01/ServicioCargue.svc"
      binding="customBinding" bindingConfiguration="myCustomHttpBinding"
      contract="mafawcf01.IServicioCargue" />
    <endpoint address="mex" binding="mexHttpsBinding" contract="IMetadataExchange" />
    <host>
      <baseAddresses>
        <add baseAddress="https://localhost:443/MafaWCF01/ServicioCargue/" />
      </baseAddresses>
    </host>
  </service>
  <service behaviorConfiguration="mafawcf01.Service1Behavior" name="mafawcf01.ServicioValidacionMultiple">
    <endpoint address="https://localhost:443/MafaWCF01/ServicioValidacionMultiple.svc"
      binding="customBinding" bindingConfiguration="transporteSeguro"
      contract="mafawcf01.IServicioValidacionMultiple" />
    <endpoint address="mex" binding="mexHttpsBinding" contract="IMetadataExchange" />
    <host>
      <baseAddresses>
        <add baseAddress="https://localhost:443/MafaWCF01/ServicioValidacionMultiple/" />
      </baseAddresses>
    </host>

Я уже зарезервируйте порт для этого comand:

netsh http add urlacl url=https://+:443/MafaWCF01

, а также сертификат, связанный с портом:

netsh http add sslcert ipport=0.0.0.0:443 certhash={some cert hash} appid={some appid}

вам нужна дополнительная информация?

3 ответов


Я обнаружил, что приложение WCF (или, скорее, http.sys) может удерживать URL-адрес в течение некоторого времени после его закрытия. Если вы попытаетесь перезапустить его немедленно, вы можете получить страшное "AddressAlreadyInUseException", потому что предыдущий экземпляр приложения каким-то образом удерживает его. Я обнаружил, что если я подожду несколько минут и попробую еще раз, это может сработать.


в случае, если это помогает любому. У меня была та же проблема при попытке разместить службу wcf в консольном приложении. Я открыл свойство служебной библиотеки wcf (Alt + Enter или щелкните правой кнопкой мыши->свойство), затем перейдите на вкладку Параметры WCF в окне Свойства и снимите флажок "запустить узел службы WCF при отладке другого проекта в том же решении". Тогда проблема решена.


У меня была та же проблема.
не удалось найти другое приложение, прослушивающее этот порт, не было никакого конфликта, но это сообщение об ошибке не оставило.
это произошло сразу после того, как служба разбилась, и с тех пор я не мог поднять ее снова.
в любом случае, после перезагрузки ПК все работало. Ну что ж..