0

サーバーがIISサーバーでホストされている1つのサーバー/クライアントアプリがあり、多くのクライアントがそのIISサーバーに接続します.デュアルバインディングは、サーバーからクライアントにメッセージをブロードキャストするために使用されます.

エラーのない Vista マシンで開発していますが、Windows 7 を使用しているクライアント PC でクライアント アプリをテストすると、エラーが発生しました。

初めてこのエラーが発生しました:

TCP ポート 80 が別のアプリケーションによって使用されているため、HTTP は URL http://+:80/Temporary_Listen_Addresses/cc6f2e30-ff08-4bfc-8397-d67630337a9c/を登録できませんでした。メイン UI スレッド 1 で処理される例外。

インターネットからの解決策によると、クライアント構成ファイルにclientBaseAddressを追加しました(変更はなく、サーバー構成にclientBaseAddressを追加しないでください)が、2番目のエラーが発生しました:

HTTP は URL http://+:91/NightlyBuild/NonVer/Communication/を登録できませんでした。プロセスには、この名前空間へのアクセス権がありません (詳細については 、http: //go.microsoft.com/fwlink/ ?LinkId=70353を参照してください)。メイン UI スレッド 1 で処理される例外。

クライアントアプリを管理者モードで実行する必要があるというコメントがいくつか見つかりました。私もそうします。前の2つのエラーは発生しませんが、今回は画面が5分間フリーズした後にタイムアウトエラーが発生します。

タイムアウトエラー

割り当てられたタイムアウト 00:05:00 内にオープン操作が完了しませんでした。この操作に割り当てられた時間は、より長いタイムアウトの一部であった可能性があります。メイン UI スレッド 1 で処理される例外。

以下は、2 番目のエラーが発生したときに使用しているクライアント構成です。

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

本当に考えが尽きました、何かコメントはありますか?

4

1 に答える 1

0

指定された URL がプロセスを実行するユーザーに登録されていないため、クライアントの「HTTP を登録できませんでした...」というエラーが発生します。

これを一時的に解決するには、HTTPNamespaceManager.exe プログラムを使用して、ローカル コンピューターの URL アクセス予約のリストを変更します。ここから入手: PaulWh の Tech Blog

于 2015-10-09T20:46:57.823 に答える