Не уверен, почему вы не можете использовать сессию в Global.asax - вам просто нужно убедиться, что вы звоните из правильного места.
По умолчанию в Global.asax очень мало, но есть количество методов , которые вы можете реализовать, если хотите, и вам, вероятно, нужно что-то вроде ( проверено локально) :
void Session_Start(object sender, EventArgs e)
{
// Code that runs when a new session is started
// Pick up your session id here, create a new context and away you go?
var sessionId = Session.SessionID;
Session.Add("sessionId", sessionId);
}
void Session_End(object sender, EventArgs e)
{
// Code that runs when a session ends.
// Note: The Session_End event is raised only when the sessionstate mode
// is set to InProc in the Web.config file. If session mode is set to StateServer
// or SQLServer, the event is not raised.
// Noting comment above, clean up your context if needs be.
}
Тогда на вашем сайте вы можете иметь что-то вроде:
protected void Page_Load(object sender, EventArgs e)
{
Literal1.Text = Session["sessionId"].ToString();
}
Я не уверен, что Session - подходящее место для вас, чтобы сохранить это, и вы захотите провести некоторое тестирование производительности, чтобы увидеть, будет ли оно обрабатывать ожидаемые нагрузки.