Я сделал ссылку для выхода с помощью гиперссылки asp.net с NavigateUrl = "Default.aspx? Logout = 1". В Default PageLoad я проверяю, является ли строка запроса нулевой, если сеанс не завершен, и пользователь перенаправляется на ту же страницу без строки запроса, действующей в качестве страницы входа.
Код в загрузке страницы по умолчанию:
if (Request.QueryString["Logout"] != null)
{
FormsAuthentication.SignOut();
Session.Clear();
Session.Abandon();
Response.Redirect("~/Default.aspx", true);
}
Когда он запускается из VisualStudio, он работает нормально, но когда он запускается из IIS, я получаю сообщение об ошибке «Ресурс не найден». Описание: HTTP 404. Ресурс, который вы ищете (или одна из его зависимостей), мог быть удален, изменилось его имя или временно недоступен. Просмотрите следующий URL-адрес и убедитесь, что он написан правильно. Запрошенный URL: /Default.aspx.
Эта же страница является начальной страницей программы, и когда она вызывается при открытии, проблем не возникает. При отладке я увидел, что загрузка страницы активирована и введено if, поэтому проблема в URL-адресе Response.Redirect. Я пробовал снимать ~ / или просто ~ или делать ../ или /ProgramName//Default.aspx. Ничего не работает.
РЕДАКТИРОВАТЬ: Моя ошибка, проблема НЕ в событии ЗАГРУЗКИ. При запуске из IIS программа НЕ возвращается на сервер, проблема связана с HyperLink NavigateUrl. Попытки его изменить не помогают. Любая идея?
Response.Redirect(Request.Url.GetLeftPart(UriPartial.Path), true);
? - person Alex Filipovici   schedule 06.05.2013