2009-03-01 22 views
2

WCFサービスをデバッグしようとしています。このクライアントは過去に接続できましたが、今接続できません。 サービスはサーバーに展開されます。私はブラウザでサーバのサービスページを見ることができ、私はクライアントを生成するための指示を見る。 svcutilを使用してクライアントプロキシと設定ファイルを再生成しました。WCFサービス接続の問題 - 多分セキュリティ?

クライアントは起動しますが、サービスへの最初の呼び出しは、1分のタイムアウト後にエラーを返して戻ります。一方、私はサーバー上で実行されているサービスに接続し、コードをステップ実行することができます。クライアントが登録されていないことがわかりました。この呼び出しのサーバーコード内のブレークポイントはヒットしません。何らかの理由で、私は、サーバーのコードにステップすることはできません(ただし、私は、サーバー上のサービスにデバッガをアタッチすることができます):

Unable to automatically step into the server. 
Connecting to the server machine 'shuttle' failed. 
Please install the Visual Studio 2008 Remote Debugger on the 
server to enable this functionality. 

リモートデバッガをインストールして実行し、またはコースれます。 私は長いタイムアウトの後、このエラーを取得しています:私はセキュリティモード=なしに設定すると

Client is unable to finish the security negotiation within the 
configured timeout (00:00:00). The current negotiation leg is 1 (00:00:00). 

、およびタイムアウトを増やし、

The open operation did not complete within the allotted timeout of 00:02:00. 
The time allotted to this operation may have been a portion of a 
longer timeout. 

にエラー変更は、私は、任意のファイアウォールを実行していません私はEtherealのサーバー上でリクエストが来るのを見ます。私はTCPストリームを見ているので、なぜ交渉が失敗したのかはわかりません。イベントログには何も関係ありません。私は蒸気がなくなり、ヒントに感謝します。

クライアントのapp.configが生成svcutilセクション含まれています

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
    <system.serviceModel> 
     <bindings> 
      <wsDualHttpBinding> 
       <binding name="WSDualHttpBinding_SportRadarDCS" 
        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> 
     <client> 
      <endpoint 
       address="...." 
       binding="wsDualHttpBinding" 
        bindingConfiguration="WSDualHttpBinding_SportRadarDCS" 
        contract="SportRadarDCS" 
        name="WSDualHttpBinding_SportRadarDCS"> 
       <identity> 
        <userPrincipalName value=".. my domain user ..." /> 
       </identity> 
      </endpoint> 
     </client> 
    </system.serviceModel> 
</configuration> 

答えて

8

は、WCFトレースを見てください。これをサービスホスト上で実行すると、個々のWCF呼び出しが発生し、構成のどの部分がポーポドされているかを知るのに十分なはずです。

これは、これが原因をトラブルシューティングする唯一の方法であったという接続上の問題を発見しました。

MSDN on WCF Tracing your application

A good tutorial to help you understand the MSDN

+1

おかげで、非常に役立ちます。私が見つけたエラーは次のとおりです:アクション 'http://schemas.xmlsoap.org/ws/2005/02/rm/CreateSequence'でメッセージを受け入れることのできるチャンネルがありませんでした。私はここから取る。 – cdonner

+0

これはDNSの問題であることが判明しました。何らかの理由で私のワークステーションがDNSになく、コールバックエンドポイントのサーバーのルックアップに失敗しました。いったん私はそれを修正した、それは働いた。 – cdonner

+0

ポイントを証明するための歓声、WCFトレースを介して接続の問題をトラブルシューティングします。あなたの問題を解決してうれしいです。 – Spence