Tôi đã có một khách hàng WCF nói chuyện với một máy chủ WCF (trên cùng một máy). Chúng tôi sử dụng netTcpBinding với mức độ bảo mật thông báo (sử dụng customPermissionMode tùy chỉnh và triển khai tùy chỉnh các serviceCredentials). Dịch vụ được đánh dấu bằng InstanceContextMode.PerSession
.Kết nối WCF net.tcp chết sau 9 giờ, 1 phút
Dịch vụ WCF tự lưu trữ trong dịch vụ Windows (không phải trong IIS).
Để giả mạo tiếp tục, chúng tôi có phương thức Ping
mà khách hàng gọi mỗi 15 giây. Chúng tôi giữ proxy của khách hàng mở trong suốt thời gian tồn tại của chương trình khách hàng (vì việc khởi tạo phiên là tốn kém trong trường hợp của chúng tôi).
Mặc dù vậy, kết nối bị giảm sau 9 giờ, 1 phút và một chút (trong 10 lần chạy thử, 7 trong số đó đã chết sau 9h1m6s).
Điều duy nhất của hậu quả trong nhật ký WCF là thông báo "SocketConnection bị hủy bỏ", theo sau là một tập hợp ngoại lệ khác nhau, nhưng thường bao gồm ngoại lệ "kết nối ở trạng thái lỗi".
Có thời gian chờ trong WCF hoặc trong TCP/IP, điều này gây ra điều này không? Bởi vì tôi đang bối rối.
10 lần chạy thử, mỗi lần kiểm tra trên 9 giờ? Tôi ngưỡng mộ sự kiên nhẫn của bạn. –
Trong sự trung thực, đó là 2 lần chạy thử nghiệm của 4 khách hàng, và 2 cùng một lúc của 1 khách hàng. Vì vậy, chỉ có 18 giờ, và để lại qua đêm, anyway. –
Nếu bạn suy nghĩ cẩn thận, '9x3600 + 60 + 6 <32768', đó là 2 công suất 15 – ajreal