Я храню токен в переменной сеанса. Я запускаю отчет, которому нужен этот токен, на новой странице ASPX с помощью функции javascript windows.open. Когда эта новая страница загружается, HttpContext.Current.Session имеет значение null.
Я справился с этим, передав токен в строке запроса, но активность в этом окне должна поддерживать активную сессию родительского окна, и я не уверен, что объект сеанса, имеющий значение null, означает для этого сценария.
Любая идея, почему объект HttpContext.Current.Session был бы нулевым, используя window.open из javascript?
РЕДАКТИРОВАТЬ: Я добавлю, что это базовый System.Web.UI.Page хранится в библиотеке SharePoint, и функция window.open вызывается из веб-части. Я думаю, что эта страница может быть унаследована от базового класса, чтобы разделить правильный контекст.
ОБНОВЛЕНИЕ : Я сузил, что это связано с SharePoint. Я переместил код, который обращается к объекту Session, в веб-часть. Веб-часть работает нормально, если поместить ее на стандартную страницу веб-части, но я добавил ее на минимальную страницу, которая содержит только ScriptManager, SPWebPartManager и WebPartZone. Код выполняется, но объект сеанса снова является нулевым. На моей минимальной странице отсутствует то, что делает объект Session доступным.
решено : Моя минимальная страница ASPX, необходимая для реализации интерфейса IRequiresSessionState. После этого появляется объект Session.
Я собираюсь отдать должное Андрею, так как он предложил самую полезную информацию.