wcf AddressAlreadyInUseException

问题描述 投票:6回答:3

我已经看过那些帖子:wcf System.ServiceModel.AddressAlreadyInUseExceptionWindows Service hosted WCF over HTTPSGetting AddressAlreadyInUseException after upgrading to .NET 4.5,它们都没有解决我的问题。我在.net 4.5中有几个wcf服务。所有这些都在同一个地址中,我在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()

这是我的app.config:

    <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>

我已经使用此命令保留了端口:

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}

你还需要其他信息吗?

.net wcf .net-4.5
3个回答
5
投票

我发现WCF应用程序(或者更确切地说是http.sys)可以在关闭后暂停一段时间。如果你试图立即重新启动它,你可以得到可怕的AddressAlreadyInUseException,因为应用程序的前一个实例以某种方式持有它。我发现,如果我等待几分钟再试一次就可以了。


4
投票

如果这有助于任何人。尝试在控制台应用程序中托管wcf服务时遇到了同样的问题。我所做的是打开wcf服务库的属性(Alt + Enter或右键单击 - >属性),然后转到属性窗口中的WCF选项选项卡,并取消选中“在同一解决方案中调试另一个项目时启动WCF服务主机”。问题是解决的。


0
投票

我有同样的问题。 找不到任何其他应用程序在该端口上侦听,没有任何冲突,但此错误消息没有离开。 它发生在服务崩溃之后,从那时起我再也无法提起服务了。 无论如何,PC重启后一切正常。那好吧..

© www.soinside.com 2019 - 2024. All rights reserved.