2010-06-09 38 views
11

Tôi có dịch vụ WCF bằng cách sử dụng HttpBinding. Dịch vụ đang chạy trong quá trình tự lưu trữ (Dịch vụ Windows) và quá trình này nằm trong danh sách ngoại lệ của Windows Firewall.Dịch vụ WCF bị chặn bởi Tường lửa của Windows

Nếu tường lửa đang hoạt động và tôi đang cố truy cập dịch vụ bằng ứng dụng C# hoặc Internet Explorer, dịch vụ sẽ không phản hồi. Nhưng nếu Firewall bị vô hiệu hóa thì kết nối sẽ hoạt động giống như một nét duyên dáng.

Có ai hết hạn với WCF và tường lửa của Windows không? Vấn đề xuất hiện trên Windows 7 64bit. Tôi chưa thử hệ điều hành khác.

Tôi phải làm gì để làm việc này với Tường lửa hoạt động?

Trân Michael

EDIT: Tôi tìm thấy một đầu mối, rằng http.sys phải được bổ sung vào danh sách ngoại lệ tường lửa, như WCF tự lưu trữ sử dụng http.sys. Bất kỳ lời khuyên, làm thế nào để giải quyết điều này?

EDIT: Tôi đã thử mở tất cả cổng nghe theo cách thủ công, cũng hoạt động nhưng không phải là tùy chọn vì tôi không biết trước.

+0

thử mở cổng dịch vụ sử dụng? tức là cổng 80, 8080 hoặc bất kỳ thứ gì bạn đã định cấu hình. Kể từ khi nó sử dụng http thường xuyên tôi không thể nhìn thấy vấn đề: ( – KTrum

+0

Tôi chỉ cố gắng và nó hoạt động.Nhưng để cung cấp một kinh nghiệm người dùng đơn giản, đây không phải là một lựa chọn trong môi trường sản xuất. (Có vẻ như cổng được thay đổi ...) –

+0

Âm thanh lạ khi cổng sẽ thay đổi Bạn có sử dụng IIS để xuất bản dịch vụ không? Tôi đoán bạn sẽ phải thực hiện một quy trình kiểm tra cổng dịch vụ nào sử dụng và mở cổng đó trong tường lửa, nếu đó là Nếu cổng được đóng trong tường lửa, bạn có thể sẽ không thể truy cập dịch vụ – KTrum

Trả lời

5

Thử bài viết MSDN Configuring HTTP and HTTPS.

+2

Cuối cùng ... Tôi không chắc liệu đây có phải là sự nâng cấp của câu trả lời của bạn, nhưng bài báo nói rằng: "Tự lưu trữ địa chỉ HTTP cho WCF không được tích hợp vào tường lửa cá nhân của Windows. 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ể. "Tôi nghĩ rằng 'ngoại lệ' là một ngoại lệ cho cổng (không phải là quá trình). Ít nhất đây là trải nghiệm của tôi. –

4

Theo như tôi biết, thêm tự tổ chức WCF quá trình dịch vụ để tường lửa không hoạt động, bởi vì nó không phải là quá trình tham gia cuộc gọi nội địa, nó chỉ hoạt động nếu dịch vụ cảng

  1. add đến cảng toàn cầu ngoại lệ
  2. thêm quy trình vào daemon WCF để xử lý ngoại lệ, tôi không chắc chắn về http, nhưng đối với các ràng buộc net.tcp, bạn cần $ FrameworkDir/SMSvcHost.exe thay vì quy trình của bạn.
Các vấn đề liên quan