2009-07-03 12 views
0

私はクライアントアプリケーションとサーバーアプリケーションを持っています。 クライアントはwcfサービスを呼び出し、サーバーがクライアント側でwcfサービスをコールバックするマシン名に基づいて、マシン情報 をサーバーに渡します。 ます。public void RegisterTasks(MachineConfig machineInfo) { 文字列は= exeProxy.Endpoint.Addressを追加します。 だからこれを達成するために、私はちょうどEndPointAddressを変えていますが、それは NoEndPointFoundExceptionを投げ、私はそれを修正する方法を、以下のコードです。 Uri.Scheme + "://" + machineInfo.MachineName.Trim()+ "/" + exeProxy.Endpoint.Address.Uri.Segments [1];WCFのEndPointアドレスはどのように変更できますか?

 Uri uri = new Uri(add); 
     EndpointAddress eadd = new EndpointAddress(add); 
     WSHttpBinding whttpBinding = new WSHttpBinding(SecurityMode.None); 

     //ServiceReference1.ExecuteTaskClient newProxy = new ExecuteTaskClient(whttpBinding , eadd); 


     //EndpointAddress endPointAddress = ; 

      exeProxy.Endpoint.Address = eadd; 
      //exeProxy.Endpoint.Binding = new System.ServiceModel.BasicHttpBinding("httpBinding"); 

     // we just execute the task by 
     // calling the wcf service on client side 
     foreach (Task task in machineInfo.Tasks) 
     {     
      exeProxy.ExecuteTask(task.TaskID); 
      // newProxy.ExecuteTask(task.TaskID); 
     } 

    } 

答えて

1

私は、EndpointNotFoundExceptionがNoEndPointFoundExceptionではないと仮定しています。私はNoEndPointFoundExceptionへの参照を見つけることができませんでした。

http://msdn.microsoft.com/en-us/library/system.servicemodel.endpointnotfoundexception.aspx

これが何を言っていることは、クライアントがサーバーを見つけることができないということです。あなたのケースでは、サーバーはクライアントにコールバックしようとしているので、役割は逆になります。

間違っている可能性が二つあります。

  • あなたは、変数を持っているURLは、「追加」が正しくありません(値をロギングしてみてください)
  • クライアント側でのWCFサービスではありません正しいURLでリスニング

ホープ、このことができます(ブラウザにURLを入れてみてください)

シラーズ

1

私の最初の印象は、デザインを再考する必要があるということです。私が独創的な(読んだ:奇妙な)解決策を見るたびに、私は製作に頭を叩きつける全体のヒープを見る。

まず、あなたが赤ちゃんで習得しようとしていることを書いてください。「サーバーに新しいデータがあるときにクライアントに連絡してほしい」もっと従来の技法を使ってどのように習得できるか考えてみてください。

デュプレックスバインディングをチェックして、何千ものクライアントにスケーリングせずにステートフルなシングルトンをポーリングすることは、必ずしも悪い考えではありません。

しかし、現在の設計上の問題を解決するために、MEXエンドポイント(mexHttpBinding)でクライアント(サーバーになる)をセットアップし、リッスンするように設定してからVSを使用しますサーバープロジェクトから)Add Service Referenceを使用してクライアント(サーバー)に接続し、ローカルマシン名などを入力してください。これだけで問題が発生する可能性があります。その後、一旦追加すると、autogen app.configを使って必要な設定を知ることができます。

また、サーバーにプロキシクラスが設定されていない場合、サーバーがクライアントを呼び出す方法についても考慮しましたか?

自分でロッドを作っているように聞こえます。

+0

赤ちゃんを使用するための+1は、「確実にこれはすでに前に行われています...」または「これを行うより良い方法があるはずです...」 – Travis

関連する問題