Я разработал веб-сайт .NET 4.0 ASP.NET. Все работает отлично. Разработано на IIS7.5, WS2008R2 Enterprise + все обновления.Weird ASP.NET Проблемы с аутентификацией
Я развертываю сервер WS2003. Все почти работает, за исключением случаев, когда я вхожу на сайт (Forms auth), он перенаправляет меня обратно на страницу входа! Нет ошибок, ничего. Иногда, когда мне удается это преодолеть, и перейдите на другую страницу или выполните действие, как одним нажатием кнопки, я перенаправляюсь обратно на страницу входа!
Убедившись, что возникла проблема с настройкой сервера, ИТ-парень установил WS2008R2 + все обновления. Отлично, поэтому я развернул сайт на этом. Угадай, что? ЕЩЕ ЖЕ ЖЕ ПРОБЛЕМА!
Что дает? Почему бы вам перенаправить его обратно на страницу входа в систему при входе в систему (без кода для этого) или при выполнении действия?
Другое дело, я использую элемент управления Telerik, а также расширители ASP.NET AJAX. Сервер, похоже, не загружает их (никаких ошибок на сервере и клиенте). Предполагается, что это выпадающие меню, и это не работает в дополнение к календарю AJAX для всплывающего окна - это тоже не работает.
Я не уверен, что теперь делать, поскольку это расстраивает и НИКОГДА не сталкиваюсь с такой проблемой.
здесь является частью моего файла конфигурации:
<configSections>
<sectionGroup name="system.web">
<section name="sanitizer" requirePermission="false" type="AjaxControlToolkit.Sanitizer.ProviderSanitizerSection, AjaxControlToolkit"/>
</sectionGroup>
</configSections>
<system.web>
<globalization culture="en-gb" uiCulture="en-gb"/>
<httpRuntime maxRequestLength="100240"/>
<trust level="Full"/>
<sanitizer defaultProvider="HtmlAgilityPackSanitizerProvider">
<providers>
<add name="HtmlAgilityPackSanitizerProvider" type="AjaxControlToolkit.Sanitizer.HtmlAgilityPackSanitizerProvider"/>
</providers>
</sanitizer>
<compilation debug="true" targetFramework="4.0">
<assemblies>
<add assembly="Telerik.Web.UI, Version=2012.3.1017.40, Culture=neutral, PublicKeyToken=949410a6b6ad1e71"/>
</assemblies>
</compilation>
<sessionState mode="InProc" timeout="30"/>
<authentication mode="Forms">
<forms name="RegisteredUsers" defaultUrl="~/Help/About.aspx" path="/" protection="All" loginUrl="~/Account/Login.aspx" timeout="31"/>
</authentication>
<authorization>
<deny users="?"/>
</authorization>
<httpHandlers>
<add path="Telerik.Web.UI.WebResource.axd" type="Telerik.Web.UI.WebResource" verb="*" validate="false"/>
</httpHandlers>
</system.web>
<location path="Account">
<system.web>
<authorization>
<allow users="*"/>
</authorization>
</system.web>
</location>
<location path="Public">
<system.web>
<authorization>
<allow users="*"/>
</authorization>
</system.web>
</location>
<location path="Styles">
<system.web>
<authorization>
<allow users="*"/>
</authorization>
</system.web>
</location>
<location path="Scripts">
<system.web>
<authorization>
<allow users="*"/>
</authorization>
</system.web>
</location>
<location path="Images">
<system.web>
<authorization>
<allow users="*"/>
</authorization>
</system.web>
</location>
<location path="Help">
<system.web>
<authorization>
<allow users="*"/>
</authorization>
</system.web>
</location>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>
<validation validateIntegratedModeConfiguration="false"/>
<handlers>
<add name="Telerik_Web_UI_WebResource_axd" verb="*" preCondition="integratedMode" path="Telerik.Web.UI.WebResource.axd" type="Telerik.Web.UI.WebResource"/>
</handlers>
</system.webServer>
Что касается кода аутентификации:
// log them in and authenticate
FormsAuthentication.SetAuthCookie(this.txtUsername.Text, false);
FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(1, this.txtUsername.Text, DateTime.Now, DateTime.Now.AddYears(1), false, this.txtUsername.Text);
// For security reasons we may hash the cookies
string hashCookies = FormsAuthentication.Encrypt(ticket);
HttpCookie cookie = new HttpCookie(FormsAuthentication.FormsCookieName, hashCookies);
cookie.Path = FormsAuthentication.FormsCookiePath;
cookie.Expires = ticket.Expiration;
// add the cookie to user browser
Response.Cookies.Add(cookie);
Session[CommonStrings.USER_LOGGED_IN] = userResponse.User;
// if DefaultWebPage is not null then redirect to that otherwise, default behavior.
if (!string.IsNullOrWhiteSpace(userResponse.User.DefaultWebPage))
{
Response.Redirect(userResponse.User.DefaultWebPage, false);
}
else
{
FormsAuthentication.RedirectFromLoginPage(this.txtUsername.Text, false);
}
ли приложение на одном сервере или Mult iple? Если это на кластере, вы можете попасть на другой сервер, чем тот, который вы только что использовали для входа в систему. – Stokedout
Похоже, вы не используете HTTP-отладчик, как Fiddler. Попытайтесь, вы могли бы обнаружить ваши проблемы таким образом. –
На одном сервере (присоединен к домену). Пробовал скрипач - не показывает ничего очевидного, но 302 перенаправляет на страницу входа в систему –