私は、定義済みのポート (12345 としましょう) で WCF サービスをホストする .Net 4.0 C# Windows Forms アプリを開発しています。この WCF サービスと通信する別の iPad アプリがあり、この接続は Windows ファイアウォールによってブロックされています。私のユーザーは、このアプリを例外リストなどに追加することを覚えておく必要があるため、常に問題を抱えています。これが不満の原因です。
アプリをより使いやすくするために、Windows で以下のスクリーンショットのようなポップアップを表示するには何が必要ですか?
更新- Windows ファイアウォールのルールをプログラムで更新できることは理解しています。ただし、それには管理者権限が必要であり、常に実行できるとは限りません。たとえば、将来 ClickOnce の展開について考えていますが、これがどのように機能するかはわかりません。そのため、そのダイアログを取得するにはどうすればよいか、まだ疑問に思っています。
解決策: 以下の @alexw の回答のおかげで、次の単純なコードを使用してダイアログを取得できました。
IPAddress ipAddress = Dns.GetHostEntry(Dns.GetHostName()).AddressList[0];
IPEndPoint ipLocalEndPoint = new IPEndPoint(ipAddress, 12345);
TcpListener t = new TcpListener(ipLocalEndPoint);
t.Start();
t.Stop();
その他 -ドキュメントに記載されているように、WCF サービスのこのポップアップを取得することはできません(下部を参照)。
WCF のセルフホステッド HTTP アドレッシングは、Windows ファイアウォールに統合されていません。特定の URL を使用したインバウンド接続を許可するには、ファイアウォール構成に例外を追加する必要があります。