2

我已将 WPF 应用程序添加到 WCF 类库中,我在 WCF 中的应用程序配置如下

  <service name="WCFChatApplication.Service1">
    <host>
      <baseAddresses>
        <add baseAddress = "http://localhost:8732/Design_Time_Addresses/WCFChatApplication/Service1/" />
      </baseAddresses>
    </host>
    <!-- Service Endpoints -->
    <!-- Unless fully qualified, address is relative to base address supplied above -->
    <endpoint address ="" binding="wsDualHttpBinding" contract="WCFChatApplication.IMessageServiceInbound">
      <!-- 
          Upon deployment, the following identity element should be removed or replaced to reflect the 
          identity under which the deployed service runs.  If removed, WCF will infer an appropriate identity 
          automatically.
      -->
      <identity>
        <dns value="localhost"/>
      </identity>
    </endpoint>
    <!-- Metadata Endpoints -->
    <!-- The Metadata Exchange endpoint is used by the service to describe itself to clients. --> 
    <!-- This endpoint does not use a secure binding and should be secured or removed before deployment -->
    <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
  </service>

我的 WPF 应用程序 cpnfig 是

    <bindings>
        <wsDualHttpBinding>
            <binding name="WSDualHttpBinding_IMessageServiceInbound" closeTimeout="00:01:00"
                openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
                bypassProxyOnLocal="false" transactionFlow="false" hostNameComparisonMode="StrongWildcard"
                maxBufferPoolSize="524288" maxReceivedMessageSize="65536"
                messageEncoding="Text" textEncoding="utf-8" useDefaultWebProxy="true">
                <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
                    maxBytesPerRead="4096" maxNameTableCharCount="16384" />
                <reliableSession ordered="true" inactivityTimeout="00:10:00" />
                <security mode="Message">
                    <message clientCredentialType="Windows" negotiateServiceCredential="true"
                        algorithmSuite="Default" />
                </security>
            </binding>
        </wsDualHttpBinding>
    </bindings>

但是当我打电话

 ServiceReference1.MessageServiceInboundClient Sc1 = new ServiceReference1.MessageServiceInboundClient(new InstanceContext(this),"WSDualHttpBinding_IMessageServiceInbound");
            Sc1.Open();

我得到的错误是

HTTP 无法注册 URLhttp://+:80/Temporary_Listen_Addresses/9b1e11c2-0c91-43a6-9a17-26f473a9fdbc/ 因为另一个应用程序正在使用 TCP 端口 80。

使用端口 80 的进程是 Inetinfo.exe。我似乎无法关闭此进程。

有没有办法可以从端口 80 移动到任何其他端口。

谢谢

4

3 回答 3

2

您正在使用双工绑定,因此客户端必须设置服务器可以访问的地址。默认情况下,它似乎使用 IIS 正在使用的端口 80。

clientBaseAddress绑定设置为另一个地址,您应该一切顺利。确保可以从服务器(防火墙、端口转发等)在客户端上访问该端口。

于 2013-05-16T10:51:38.447 回答
0

我的猜测是 Visual Studio 正在尝试托管 WCF 服务,这会导致与您的应用程序进行的托管发生冲突。

打开 WCF 项目的属性。

打开 WCF 选项选项卡。

取消选中第一个复选框(在同一解决方案中调试另一个项目时启动 WCF 服务主机)

于 2013-05-16T10:50:41.850 回答
0

关闭 Skype。布亚。有同样的问题。认为您可以更改 Skype 端口。

http://forums.iis.net/t/1086489.aspx?IIS+Manager+Error+The+process+cannot+access+the+file+because+it+is+being+used+by+another+process+异常+来自+HRESULT+0x80070020+

于 2016-05-10T13:21:19.997 回答