Направих връзка за излизане с asp.net HyperLink, с NavigateUrl="Default.aspx?Logout=1". В Default PageLoad проверявам дали низът на заявката е нулев, ако не сесията се прекратява и потребителят се пренасочва към същата страница, без низът на заявката, действаща като страница за вход.
Кодът в 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. Нищо не работи.
РЕДАКТИРАНЕ: Моя грешка, проблемът НЕ е в събитието LOAD. Когато работи от IIS, програмата НЕ се връща към сървъра, проблемът е с HyperLink NavigateUrl. Опитите да го промените не помагат. Някаква идея?
Response.Redirect(Request.Url.GetLeftPart(UriPartial.Path), true);
? - person Alex Filipovici   schedule 06.05.2013