2013-02-27 14 views
6

Có cách nào để tôi có thể đặt cookie từ bên trong một trung tâm SignalR, cụ thể là phương thức OnConnected. Tôi muốn gửi một cookie có id phiên.Đặt cookie từ trung tâm SignalR trên máy chủ

Tôi đã thử điều này nhưng có vẻ như không hoạt động, nó cũng có vẻ khó xử vì tôi không chắc tại sao tôi cần phải cung cấp cặp giá trị khóa của chuỗi và cookie.

public override Task OnConnected() 
{ 
    var guid = new Guid(); 
    Context.RequestCookies.Add("SessionID", new Microsoft.AspNet.SignalR.Cookie("SessionID", guid.ToString())); 
    return null; 
} 

Trả lời

2

Đây là một câu hỏi cũ, nhưng trong trường hợp bất cứ ai tình cờ trên đó, có một cách để thêm các tập tin cookie từ một trung tâm trong signalr 2.0+ . Các HttpContextBase có thể được truy cập thông qua yêu cầu trung tâm bối cảnh, vì vậy bạn có thể làm một cái gì đó như thế này:

var newCookie = new HttpCookie("cookieName", "cookieValue"); 
Context.Request.GetHttpContext().Response.Cookies.Add(newCookie); 
0

Tôi đã chọn phân lớp và sử dụng PersistentConnection thay vì Hub để có thêm tùy chọn trên máy chủ.

Trong trường hợp của tôi, tôi ghi đè OnConnectedAsync và sử dụng connectionId trong đó để theo dõi kết nối/phiên. Có lẽ bạn có thể xem xét cách tiếp cận này?

protected override Task OnConnectedAsync(IRequest request, string connectionId) 
    { 
+0

tôi có thể không thực sự chuyển từ PersistentConnections đến trung tâm, đó là loại một sự thay đổi triệt để –

1

Cuối cùng tôi quyết định đặt cookie từ bộ điều khiển MVC phục vụ, tôi không tìm thấy cách nào để đặt từ trong cuộc gọi SignalR.

-2

Tôi chỉ cố gắng điều tương tự và điều này dường như làm việc:

HttpContext.Current.Response.Cookies.Add(cookie); 
+0

Buổi nói chuyện là về SignalR, nhưng không MVC. – Agat

+0

Thời gian dài trước đây, nhưng khá chắc chắn tôi đã làm nó trong một bối cảnh SignalR. – modec

+0

Cập nhật câu trả lời của bạn với một sự điều chỉnh và tôi sẽ unminus. – Agat