Тот факт, что это ashx, не имеет значения - если предположить, что запрос порождается запросом из ожидающего сеанса; Я предполагаю, что это должно быть - но это могло бы заплатить, чтобы проверить точно, как запрос формируется. Всегда платит, чтобы вернуться к основам:)
Предполагая, что это нормально, вот как я это делал:
string sessionId = string.Empty;
System.Web.SessionState.SessionIDManager sessionIDManager = new System.Web.SessionState.SessionIDManager();
bool supportSessionIDReissue;
sessionIDManager.InitializeRequest(httpContext, false, out supportSessionIDReissue); sessionId = sessionIDManager.GetSessionID(httpContext);
if (sessionId == null)
{
// Create / issue new session id:
sessionId = sessionIDManager.CreateSessionID(httpContext);
}
В конце этого переменная sessionId будет (должна) содержать существующий идентификатор сеанса или вновь созданный, который можно использовать позже ..