2012-03-02 32 views
7

Tôi sẽ cố gắng tạo một câu chuyện dài ngắn:Khách hàng SignalR .NET: Không thể bắt đầu kết nối từ bên trong ứng dụng web miền ứng dụng

Tôi muốn gọi phương thức trên một ứng dụng web từ một hội đồng cốt lõi trong ứng dụng của tôi. Lý do là tôi có một số ứng dụng mà tất cả cuối cùng gọi vào các sự kiện cốt lõi và kích hoạt (nghĩ rằng web di động, trang web quản trị, api, v.v.). Tôi muốn thông báo cho người dùng về trang web sự kiện trên máy tính để bàn khi chúng xảy ra, sử dụng SignalR.

Để tăng mức này, tôi đã tạo giải pháp 4 dự án. Một dự án cốt lõi với proxy trung tâm. Ứng dụng web với trung tâm. Một ứng dụng web khác không có trung tâm. Và cuối cùng là một ứng dụng giao diện điều khiển.

Nếu tôi gọi vào cốt lõi từ ứng dụng bảng điều khiển và cố gắng gửi tin nhắn cho khách hàng trung tâm bằng proxy, mọi thứ đều hoạt động tuyệt vời. Tuy nhiên, nếu tôi cố gắng gọi vào lõi và sử dụng các proxy từ một trong những ứng dụng web, thực hiện treo tại các cuộc gọi đến connection.Start():

var connection = new HubConnection("..."); 
var hub = connection.CreateProxy("Spike.Hub"); 
connection.Start().Wait(); 

là những thứ SignalR.Client không có nghĩa là được sử dụng từ bên trong miền ứng dụng của ứng dụng web? Tại sao nó hoạt động như mong đợi trong ứng dụng giao diện điều khiển chứ không phải từ ứng dụng web?


Cập nhật: Tôi đã nối vào nguồn SignalR và khi chạy từ một trong các ứng dụng web, thực hiện treo tại dòng 130 của SignalR.Client.Connection. Các _syncContext cho kết nối như vậy là một thể hiện của AspNetSynchronizationContext, và khi gọi phương thức Post() của nó, mọi thứ đều dừng lại.

Trả lời

10

Có lỗi trong SignalR.Client và bạn tìm thấy nó :)

+0

Hoan hô cho tôi: S - Sẽ tiếp tục bất kỳ cuộc thảo luận nào trong vấn đề github. https://github.com/SignalR/SignalR/issues/221#issuecomment-4300487. – spot

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