ASP.NET SessionID в URL - PullRequest
       14

ASP.NET SessionID в URL

1 голос
/ 02 февраля 2009

Я использую веб-приложение ASP.NET, которое передает идентификатор сеанса в строке URL. Есть странная ошибка, которая, как я предполагаю, связана с конфигурацией сервера, но я в растерянности.

На странице A есть строка URL, которая выглядит примерно так:

http://whateverqa.com/NTapsWeb/(S(yn5cby55lgzstcen0ng2b4iq))/List_Forms.aspx?wid=__zzwid1

когда вы нажимаете кнопку, она переходит на страницу B, на которой отображается некоторая информация; когда вы нажимаете кнопку «Выход» на этой странице, она возвращает вас на страницу A, но замечает, как она перемещает идентификатор сеанса в URL-адресе за NTapsWeb:

http://whateverqa.com/(S(yn5cby55lgzstcen0ng2b4iq))/NTapsWeb/List_Forms.aspx?wid=__zzwid1

Это оставляет меня с ошибкой страницы, которая говорит:

"Вы не авторизованы для просмотра этой страницы

У вас нет прав для просмотра этого каталога или страницы с использованием предоставленных вами учетных данных.

Пожалуйста, попробуйте следующее:

Свяжитесь с администратором веб-сайта, если вы считаете, что сможете просматривать этот каталог или страницу. Нажмите кнопку Обновить, чтобы повторить попытку с другими учетными данными. Ошибка HTTP 403 - запрещено: доступ запрещен. Информационные службы Интернета (IIS)


Техническая информация (для обслуживающего персонала)

Перейдите в Службу поддержки продуктов Microsoft и выполните поиск по названию слов HTTP и 403. Откройте справку IIS, доступную в диспетчере IIS (inetmgr), и выполните поиск по темам, озаглавленным «Безопасность, проверка подлинности и пользовательские сообщения об ошибках». *

Странно то, что он работает на производственном сервере и прекрасно работает, когда идентификатор сессии перемещается вниз по строке. Если я скопирую идентификатор сеанса обратно и вставлю его после ошибки:

http://whateverqa.com/NTapsWeb/(S(yn5cby55lgzstcen0ng2b4iq))/List_Forms.aspx?wid=__zzwid1

загружается нормально. Опять же, это хорошо работает в Production, просто не работает на сервере QA.


Спасибо за ответ. Это не проблема тайм-аута, потому что, как я уже говорил, если переместить идентификатор сеанса вверх в URL, он снова работает, поэтому данные все еще там.

Код для кнопки выхода написан на JavaScript и выглядит следующим образом:

<script type="text/javascript">
function ExecFuncInMain(id, arg)
{
    //alert('test'+id);
    var o = window.top._mainWindow.document.all[id];
    if(o!=null)
    {
        var s = o.onclick+"";
        //alert(s);
        if(s!=null && s!='null') 
        {
            s = s.replace("javascript:", "").replace("\n", "").replace("\n", "").replace("\n", "").replace("\n", "").replace("\n", "").replace("{", "").replace("}","");
            s = "window.top._mainWindow."+s.replace("function anonymous()", "")+";";
        }
        else s = s.replace('null','');
        s = s+"window.top._mainWindow.__doPostBack('"+o.id+"', '');";
        //alert(s);
        eval(s);
    }
    else alert("object is null");
}

1 Ответ

3 голосов
/ 02 февраля 2009

В web.config найдите строку sessionState и убедитесь, что для cookieless установлено значение false, поэтому это выглядит примерно так:

<sessionState mode="InProc" cookieless="false" timeout="400"></sessionState>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...