2010-05-31 71 views
8

Có điều gì đó trong cấu hình WCF xác định thời gian chờ để thực hiện yêu cầu ở phía dịch vụ không? Ví dụ. Dịch vụ WCF sẽ ngừng thực hiện yêu cầu sau một thời gian. Tôi có một dịch vụ mà làm cho một số công việc tùy thuộc vào đầu vào của khách hàng. Trong một số trường hợp, một cuộc gọi như vậy có thể mất quá nhiều thời gian. Tôi muốn giới hạn thời gian thực hiện của các yêu cầu như vậy trên phía dịch vụ, không phải là khách hàng sử dụng SendTimeout. Tôi biết về tài sản OperationTimeout, nhưng nó không hủy bỏ yêu cầu dịch vụ, nó chỉ cho khách hàng biết rằng yêu cầu đã hết thời gian.Làm thế nào để giới hạn thời gian thực hiện yêu cầu của dịch vụ WCF?

Trả lời

16

Nói chung, không có gì sẽ thực thi hoàn toàn việc này. Thật không may, đó là một trong những điều mà thời gian chạy thực sự không thể thực thi tốt mà không thể rời khỏi trạng thái sai lệch (khá nhiều thay thế duy nhất cho nó sẽ là hủy bỏ thread đang chạy và có một loạt các hậu quả không mong muốn). Vì vậy, về cơ bản, nếu đây là thứ bạn muốn chủ động thực thi, tốt hơn hết là thiết kế dịch vụ của bạn để giải quyết vấn đề này để thực thi hoạt động của bạn có các điểm ngắt an toàn, nơi hoạt động có thể bị chấm dứt nếu thời gian thực hiện tối đa. đã bị vượt quá.

Mặc dù có nhiều công việc hơn, bạn có thể sẽ hài lòng hơn với nó trong thời gian dài.

+0

Có vẻ như hiện không có giải pháp nào khác. Cảm ơn – Kamarey

+1

+1 Cảm ơn vì điều đó. Thông tin này không có sẵn ở nhiều nơi. MS có vẻ bóng trên toàn bộ cơ chế timeout của wcf. –

Các vấn đề liên quan