Как установить значение сеанса в обработчике в asp.net

Я использую uploadify для загрузки аудиофайла. Он использует обработчик upload.ashx для загрузки файла на сервер. Я хочу получить путь к файлу на моей странице aspx. Итак, я пытаюсь установить сеанс в обработчике, чтобы получить путь к файлу в aspx, но я не могу этого сделать. Как я могу получить значение пути к файлу из обработчика на страницу .aspx

public class Upload : IHttpHandler {

    public void ProcessRequest (HttpContext context) { 
       string savepath = context.Server.MapPath(tempPath);
       context.Session["AudioFile"] = savepath;

   }  }

Возникло исключение Nullreference: ссылка на объект не установлена ​​на экземпляр объекта.


person Murthy    schedule 30.01.2012    source источник


Ответы (2)


Добавьте интерфейс IRequiresSessionState в определение обработчика. Или IReadOnlySessionState, если вам нужно только прочитать - только информация, потому что это может дать небольшой прирост производительности, избегая блокировки и записывая значения сеанса обратно.

Это просто интерфейс маркера, который сообщает среде выполнения, что этому обработчику требуется состояние сеанса.

public class Upload : IHttpHandler, IRequiresSessionState{
    //...
}
person Akos Lukacs    schedule 30.01.2012
comment
Теперь я могу установить значение сеанса в обработчике, но на странице aspx значение сеанса всегда равно null, почему оно равно null - person Murthy; 30.01.2012
comment
И идентификатор сеанса в обработчике отличается от того, который я получаю на странице aspx. В том, что проблема - person Murthy; 30.01.2012
comment
Вы получаете другой сеанс и, следовательно, другой идентификатор сеанса, если вы отправляете запрос из разных браузеров. Или просто перезапустите свой веб-сервер и запросите страницу или обработчик с разных вкладок. Наверное, в этом твоя проблема. - person Akos Lukacs; 30.01.2012

Добавьте интерфейс IRequiresSessionState в свой метод, например открытый класс Upload: IHttpHandler, IRequiresSessionState {

}

person Md Shoaib Alam    schedule 29.04.2014
comment
Не могли бы вы объяснить улучшение по сравнению с ответом @AkosLukacs? - person bummi; 22.10.2014