Почему "Файл не существует". исключение в Application_Error не имеет доступа к данным сеанса?

Объект HttpContext.Current.Session является нулевым, когда приложение выдает "Файл не существует". исключение в событии Application_Error.

protected void Application_Error(object sender, EventArgs e)
{
    Exception ex = HttpContext.Current.Server.GetLastError();
    if (ex.Message == "File does not exist." && HttpContext.Current.Session == null)
    {
        if (((System.Web.HttpException)(ex)).GetHttpCode() == 404)
        {
            LogtheException(Session["uname"].ToString());// Throwing the Exception Here
        }
    }
    else
    {
        LogtheException(Session["uname"].ToString());
        Server.Transfer(UrlMaker.ToError(ex.Message.ToString()));
    }
}

Бросая исключение

Session state is not available in this context.

Почему объект HttpContext.Current.Session является нулевым, если путь к файлу css/image неверен. Вместо этого он должен генерировать FileNotFoundException, а также иметь доступ к данным сеанса.

1 ответ

Решение

Подобный вопрос был задан здесь
Запросы CSS и изображения обычно не нуждаются в доступе к сеансу, поэтому asp не загружает сеанс в память, и у вас нет доступа к нему в случае ошибки.

Другие вопросы по тегам