私は最近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);
あなたは接続するつもりのないリモートマシンに静的IPを要求します –
あなたのwcfサービスコードに関する情報がqestionに書き込まれるようにしてください。誰でもあなたを助けることができます –
あなたのマシンはルータの後ろにいるかもしれません。ポート4000のトラフィックをマシンに転送するようにルータを設定する必要があります。 – LoekD