asp.net „Запомни ме“ вече не работи с удостоверяване на формуляри

Имам два уебсайта със самостоятелно написани доставчици на членство, които се хостват на един и същ сървър в една и съща мрежа в различни уеб приложения и различни групи приложения.

Преди имах проблема, че не можех да вляза в двата сайта едновременно. Благодарение на публикацията на Реми, това сега работи, трябваше да добавя name-атрибута към елемента forms.
Но сега имам проблема, че опцията за запомняне на asp login-control спря да работи. Потребителят излиза от системата след нормалното изчакване на сесията.

Атрибутите за удостоверяване във файла web.config изглеждат по следния начин:

<authentication mode="Forms" >
  <forms loginUrl="~/UserMgmt/Login.aspx" timeout="400000" slidingExpiration="true" name="NameOfTheSite"/>
</authentication>

Също така зададох името на бисквитката за удостоверяване на формуляри на различни имена.

Има ли още нещо, което трябва да добавя, за да работи функцията за запомняне?

Актуализация
Забелязах, че ако деактивирам криптирането и валидирането за бисквитката за удостоверяване на формуляри, проблемът изчезва. Ако активирам криптиране, валидиране или и двете, проблемът възниква отново.
Знам също, че не зависи от имената на сесийните бисквитки (те дори може да са идентични). Може би тази информация ще помогне на някой да разбере какво се случва?

Актуализация 1
Благодаря на Джейсън Кийли за решението на този проблем. Никога не бих го намерил. Междувременно намерих съответната информация в msdn. В Как да: Конфигуриране на MachineKey в ASP.NET 2.0 в раздела „Съображения за внедряване на уеб ферма“ е написано:

Ако искате да изолирате приложението си от други приложения на същия сървър, поставете <machineKey> във файла Web.config за всяко приложение на всеки сървър във фермата. Уверете се, че използвате отделни ключови стойности за всяко приложение, но дублирайте ключовете на всяко приложение във всички сървъри във фермата.


person HCL    schedule 18.01.2011    source източник
comment
Това е горе-долу това, което имам. Изтрихте ли съществуващите бисквитки?   -  person Remy    schedule 21.01.2011
comment
@Remy: Не, не проработи, но все пак беше добра идея!   -  person HCL    schedule 21.01.2011
comment
какво се случва, ако промените времето за изчакване на нещо като 7 дни (10080) вместо 277+ (400000) дни?   -  person Mark Schultheiss    schedule 27.01.2011
comment
@Mark Schultheiss: Не, опитах го и нямаше ефект.   -  person HCL    schedule 27.01.2011


Отговори (3)


Проблемът може да е, че имате ключове за валидиране, които се генерират автоматично всеки път, когато стартирате работния процес. Бисквитката е криптирана, но когато се върнете, се използва нов ключ от страна на сървъра и по този начин вашата бисквитка не може да бъде декриптирана.

Вижте раздела machineKey http://msdn.microsoft.com/en-us/library/ff649308.aspx

Ето нещо, което ще генерира секцията machineKey за вас http://www.qualitydata.com/products/aspnet-membership/help/configuration/no-machinekey.aspx

person Jason Kealey    schedule 28.01.2011
comment
Трябва да призная, че не разбирам какво означава отговорът ви (защото познанията ми за asp.net са съвсем малко). Какво представлява работният процес и защо се стартира отново. Това ли е процесът, който IIS хоства в мрежата? Ако да, защо този проблем възниква само когато имам двама доставчици на членство. Ако имам само един, всичко върви добре. Освен това, ако прочета свързаните документи, всички те казват, че трябва да конфигурирам секцията с ключ на машината, ако приложението ми работи в уеб ферма или ако искам да споделя данните за вход между приложенията. Но не искам нито едно от двете, изрично да не споделям данните за влизане между приложенията. - person HCL; 29.01.2011
comment
Предвид факта, че деактивирането на валидирането кара всичко да работи, вярвам, че всеки път, когато наборът от приложения (работен процес на IIS) се нулира, той генерира нов ключ, който използва за валидиране на бисквитката на потребителя, когато се върне на вашия сайт. Може да се нулира поради неактивност или поради редица причини. (И новият ключ не може да дешифрира съдържанието от предишното посещение, тъй като не е същото като първоначалното). Опитайте да добавите нещо, генерирано с горния инструмент, и ни уведомете дали работи. - person Jason Kealey; 31.01.2011
comment
Вярвам, че това е най-вероятното решение предвид фактите. - person Greg; 01.02.2011
comment
+1, приемете и наградите! След като прочетох правилните документи, всичко изглежда ясно, но без правилната връзка нямаше да намеря решението. Благодаря. - person HCL; 01.02.2011

Опитайте да зададете името на домейна, за да сте сигурни, че бисквитката за запомняне е зададена правилно във всички случаи

<forms  path="/" domain="nameof.com" ...the rest
person Aristos    schedule 28.01.2011
comment
+1 Нямам късмет и с това, но посочването на домейна и особено задаването на пътя беше смислен опит. - person HCL; 29.01.2011
comment
@HCL проверете и настройките за анонимни бисквитки. - person Aristos; 29.01.2011

Времето за изчакване на бисквитките също е ограничено от IIS и по подразбиране е нещо ниско като 20 минути. За да промените това:

  1. Отворете IIS Manager.
  2. Щракнете с десния бутон върху вашия сайт и изберете свойства.
  3. Изберете раздела ASP.NET и щракнете върху Редактиране на конфигурацията.
  4. Изберете раздела Удостоверяване.
  5. Изберете Разрешаване на плъзгащо изтичане.
  6. Задайте времето за изчакване на бисквитките на по-дълга стойност. За да зададете 30 дни, въведете 30.00:00:00.
  7. Щракнете върху OK и излезте от IIS мениджъра.

въведете описание на изображението тук

person JBrooks    schedule 28.01.2011