我在現有的ASP.NET項目中實現了一個自定義web處理程序(ashx)頁面,該頁面使用Session對象來知道哪個用戶是請求頁面。網頁處理程序的工作原理除了一個主要缺點。 Session對象不可用於我的WebSocket處理程序任務。如何從WebSocket請求獲取ASP.NET Session對象?
我試過打電話HttpContext.Current.Session
但它是空的。
有什麼建議嗎?
更新
感謝卡爾·安德森的回答,我能夠做一些頭部的方式,但問題仍然有效。我在處理程序代碼如下:
public class WSHandler : IHttpHandler, IRequiresSessionState
{
public void ProcessRequest(HttpContext context)
{
if (context.IsWebSocketRequest)
{
string s = context.Session["UserName"]; // This works now!
context.AcceptWebSocketRequest(ProcessWebSocket);
}
}
public bool IsReusable { get { return false; } }
private async Task ProcessWebSocket(AspNetWebSocketContext context)
{
string s = HttpContext.Current.Session["UserName"]; // This still doesn't. The Session property is null
...
}
}
謝謝你把我在寫軌道上。我現在可以從'ProcessRequest'方法訪問Session對象。然而,我的'AcceptWebSocketRequest'任務沒有可用的會話,這是我需要它。我會將我的代碼添加到我原來的問題中。 – vbguyny