В этой статье описывается, как обернуть обработчик ошибок Elmah в другой обработчик событий, который разрешает доступ к состоянию сеанса:
http://groups.google.com/group/elmah/msg/a0aa776d348ba97e
В Global.asax вы можете получить что-то вроде следующего:
protected void Application_PreRequestHandlerExecute(Object sender, EventArgs e)
{
// Get the filename being requested
string filename = Path.GetFileName(Request.Path).ToLower();
// Verify that a user is logged in by checking the session
bool isValid = (HttpContext.Current.Session["User"] != null);
// Throw error if invalid
if (filename == "elmah.axd" && !isValid)
throw new SecurityException("Access to elmah.axd is denied");
}
Стандартный обработчик Elmah не реализует IRequiresSessionState или IReadOnlySessionState, поэтому вам придется создать другой обработчик событий, чтобы обернуть это, как описано в ссылке, упомянутой выше. В противном случае вы не сможете получить доступ к сеансу в событии Application_PreRequestHandlerExecute.