我有一个服务器/客户端应用程序,其中服务器托管在 IIS 服务器中,许多客户端将连接到该 IIS 服务器,双重绑定用于将消息从服务器广播到客户端。
我在没有错误的 Vista 机器上开发,但是当我们在使用 Windows 7 的客户端 PC 上测试客户端应用程序时,出现错误。
我第一次遇到这个错误:
HTTP 无法注册 URL http://+:80/Temporary_Listen_Addresses/cc6f2e30-ff08-4bfc-8397-d67630337a9c/ ,因为另一个应用程序正在使用 TCP 端口 80。主 UI 线程 1 上处理的异常。
根据来自互联网的解决方案,我在客户端配置文件中添加了一个 clientBaseAddress(没有更改,并且从不在服务器配置中添加 clientBaseAddress),现在我得到第二个错误:
HTTP 无法注册 URL http://+:91/NightlyBuild/NonVer/Communication/。您的进程没有对此命名空间的访问权限(有关详细信息,请参阅 http://go.microsoft.com/fwlink/?LinkId=70353)。主 UI 线程 1 上处理的异常。
好的,我发现一些评论说需要以管理员模式运行客户端应用程序,我也是这样做的,我没有收到前两个错误,但是这次我在屏幕冻结 5 分钟后出现超时错误。
超时错误
打开操作未在分配的 00:05:00 超时内完成。分配给此操作的时间可能是较长超时的一部分。主 UI 线程 1 上处理的异常。
下面是我遇到第二个错误时使用的客户端配置。
<wsDualHttpBinding>
<binding name="WSDualHttpBinding_ICommunicationService"
closeTimeout="00:05:00" openTimeout="00:05:00" receiveTimeout="00:10:00" sendTimeout="00:05:00"
bypassProxyOnLocal="false" transactionFlow="false" hostNameComparisonMode="StrongWildcard"
maxBufferPoolSize="0" maxReceivedMessageSize="2147483647"
messageEncoding="Text" textEncoding="utf-8" useDefaultWebProxy="true"
clientBaseAddress="http://remote-server:8001/Communication/">
<readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
<reliableSession ordered="true" inactivityTimeout="00:10:00" />
<!--<security mode="Message">
<message clientCredentialType="Windows" negotiateServiceCredential="true" algorithmSuite="Default" />
</security>-->
<security mode="None" />
</binding>
客户端配置中的端点:
<client>
<endpoint address="http://remote-server:90/Communication/CommunicationService.svc" binding="wsDualHttpBinding" bindingConfiguration="WSDualHttpBinding_ICommunicationService" contract="CommunicationService.ICommunicationService" name="WSDualHttpBinding_ICommunicationService">
</endpoint>
</client>
实在想不通,有意见吗?