Почему переменные сеанса не работают должным образом при переходе по ссылке из документа MS Word - PullRequest
2 голосов
/ 20 августа 2009

Если у вас есть ссылка на веб-страницу в документе Microsoft Word и вы переходите по этой ссылке, чтобы перейти на веб-страницу, переменные сеанса ASP.Net не всегда работают должным образом.

В частности, они работают первые несколько раз, а затем перестают работать.

Например, если у вас есть ссылка на страницу MVC, например:

http://localhost/Home/TransferToWebForm

и в контроллере у вас есть:

public ActionResult TransferToWebForm()
{
    Session["SessionVarFromMVC"] = "Some Value";
    return Redirect("~/WebForm.aspx");
}

Затем на целевой странице (WebForm.aspx) вы пытаетесь получить эти переменные сеанса, они пусты.

<%= string.IsNullOrEmpty(Session["SessionVarFromMVC"]) 
    ? "***Session Empty***" 
    : Session["SessionVarFromMVC"] %>

(я обнаружил в Office 2007, и я не уверен, существует ли проблема в других версиях)

1 Ответ

1 голос
/ 20 августа 2009

Проблема в том, что когда вы впервые переходите по ссылке из Microsoft Word, сервер устанавливает cookie (ASP.NET_SessionId), и Word запоминает это. Последующие щелчки по ссылке приводят к отправке того же файла cookie на сервер с новым запросом.

Все отлично работает с этим процессом, пока время сеанса на сервере не истекло. При следующем щелчке Word отправляет cookie с запросом, и на сервере больше нет действительного сеанса для него. В этом случае переменные сеанса, установленные первой страницей, просто падают с края земли (так сказать) и недоступны для следующей страницы.

Меня озадачивает то, что почему Word хранит файл cookie сеанса?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...