我正在开发 .Net 4.0 C# Windows Forms 应用程序,该应用程序在某个预定义端口(例如 12345)上托管 WCF 服务。我们有另一个与此 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 的入站连接。