2016-08-26 25 views
0

私は最近WCFを勉強し始めました。だから私は簡単なアプリケーションを書いた。クライアントは文字列を送信し、サーバは単に文字列を画面に出力します。このアプリは、ローカルアドレスで自分のコンピュータで正常に動作します。WCFを使用してインターネット経由で2台のマシンを接続

System.ServiceModel.EndpointNotFoundException::私はインターネットを通じて自分のIPで接続しようとする。しかし、私はこの例外を取得メッセージを受け入れることができるhttp://(IP):4000/IContractで聞いて何のエンドポイントがありませんでした。

ポートが開いています。私に何が足りないのか教えてください。ここにアドレスを宣言する方法を示します。
Uri adress = new Uri("http://(IP of computer, running server):4000/IContract");
私はウェブサイトから私のIPアドレスを取得しました。それは私に2つを与えました。私のIPアドレスと私のローカルIPアドレス。したがって、ローカルとは、クライアントとサーバーの両方が自分のPC上にある場合だけです。私が地元ではないとしよう - 何も全く働かない。
助けていただければ幸いです。ここで

は、サービスプロバイダからのコードです:ここでは

Uri adress = new Uri("http://212.3.115.3:4000/IContract"); 
    BasicHttpBinding binding = new BasicHttpBinding(); 
    Type contract = typeof(IContract); 

    ServiceHost host = new ServiceHost(typeof(Service)); 
    host.AddServiceEndpoint(contract,binding,adress); 
    host.Open(); 

は、サービスの消費者からのコードです:

 Uri adress = new Uri("http://212.3.115.3:4000/IContract"); 
     BasicHttpBinding binding = new BasicHttpBinding(); 

     EndpointAddress endpoint = new EndpointAddress(adress); 

     ChannelFactory<IContract> factory = new ChannelFactory<IContract>(binding, endpoint); 
     IContract channel = factory.CreateChannel(); 
     channel.Say(tmp); 
+0

あなたは接続するつもりのないリモートマシンに静的IPを要求します –

+0

あなたのwcfサービスコードに関する情報がqestionに書き込まれるようにしてください。誰でもあなたを助けることができます –

+0

あなたのマシンはルータの後ろにいるかもしれません。ポート4000のトラフィックをマシンに転送するようにルータを設定する必要があります。 – LoekD

答えて

0

は、サービスプロバイダを含む、マシンの静的IPを命じました。イーサネットケーブルをPCに直接差し込んでください。それは働いたので、みなさん、ありがとう。

関連する問題