Tôi đang phát triển .Net 4.0 C# Windows Forms ứng dụng lưu trữ dịch vụ WCF trên một số cổng được xác định trước (giả sử 12345). Chúng tôi có một ứng dụng iPad khác nói chuyện với dịch vụ WCF này - và kết nối này bị chặn bởi tường lửa của cửa sổ. Người dùng của tôi luôn gặp rắc rối với nó vì họ phải nhớ thêm ứng dụng này vào danh sách ngoại lệ, v.v. - điều này gây ra sự thất vọng.cách hiển thị "Windows Firewall đã chặn một số tính năng của chương trình này" hộp thoại cho ứng dụng của tôi?
Điều gì được yêu cầu để làm cho Windows hiển thị cửa sổ bật lên như trên ảnh chụp màn hình bên dưới cho ứng dụng của tôi, để làm cho ứng dụng trở nên thân thiện hơn?
CẬP NHẬT - Tôi hiểu tôi có thể cập nhật các quy tắc trong Windows Firewall theo chương trình. Tuy nhiên, điều đó sẽ yêu cầu đặc quyền quản trị không phải lúc nào cũng khả thi. Ví dụ, tôi đang suy nghĩ về việc triển khai ClickOnce một thời gian trong tương lai - không chắc nó sẽ hoạt động như thế nào với điều này. Vì vậy, tôi vẫn tự hỏi tôi nên làm gì để có được hộp thoại đó.
SOLUTION: nhờ @alexw câu trả lời dưới đây, tôi đã có thể nhận được hộp thoại sử dụng mã đơn giản này:
IPAddress ipAddress = Dns.GetHostEntry(Dns.GetHostName()).AddressList[0];
IPEndPoint ipLocalEndPoint = new IPEndPoint(ipAddress, 12345);
TcpListener t = new TcpListener(ipLocalEndPoint);
t.Start();
t.Stop();
và nhiều hơn nữa - đó là KHÔNG thể để có được popup này cho WCF dịch vụ như documentation states (xem ở dưới cùng):
Tự lưu trữ địa chỉ HTTP cho WCF không được tích hợp vào Windows tường lửa. Một ngoại lệ phải được thêm vào cấu hình tường lửa để cho phép các kết nối gửi đến bằng cách sử dụng một URL cụ thể.
cảm ơn bạn. Tôi đã cập nhật câu hỏi của mình - Tôi biết về khả năng mở cổng theo cách thủ công nhưng tôi vẫn muốn cho phép người dùng thực hiện lựa chọn một cách rõ ràng. – avs099
Người dùng vẫn yêu cầu quyền quản trị để 'Cho phép truy cập' bằng dấu nhắc tường lửa của Windows. Bạn đã thử viết một chương trình đơn giản mở một cổng TCP/IP đang nghe và xem liệu nó có tạo ra một dấu nhắc không? Có lẽ bạn cần làm điều đó một thời gian ngắn trước khi dịch vụ WCF bắt đầu? –
cảm ơn - đã hoạt động chính xác như bạn đã nói. Sử dụng TcpListener để bắt đầu nghe cổng sẽ hiển thị nhắc Windows Firewall. – avs099