Выйти из Asp.net автоматически - PullRequest
1 голос
/ 18 мая 2010

Я недавно развернул приложение, которое использует членство asp.net (SqlMembershipProvider), и я не знаю почему, но оно автоматически выходит из системы через 1 минуту бездействия. Этого не происходит в моей среде разработки. Я даже установил userIsOnlineTimeWindow на 60, который должен быть в минутах. Есть идеи, почему это происходит?

Я выполняю развертывание в виртуальном каталоге в среде общего хостинга. Вот как я настраиваю членство провайдера

<membership defaultProvider="FaceMoviesMembership" userIsOnlineTimeWindow="60">


<providers>
<clear/>
<add name="FaceMoviesMembership" type="System.Web.Security.SqlMembershipProvider" connectionStringName="FaceMoviesAuthConnectionString" 
         enablePasswordRetrieval="true" enablePasswordReset="true" requiresQuestionAndAnswer="false" maxInvalidPasswordAttempts="10" 
         passwordAttemptWindow="60" requiresUniqueEmail="false" passwordFormat="Clear" applicationName="FaceMoviesWeb" 
         minRequiredPasswordLength="5" minRequiredNonalphanumericCharacters="0"/>


</providers>

Ответы [ 2 ]

2 голосов
/ 18 мая 2010

Как уже говорилось, ваша проблема может быть проблемой экземпляра.

Динамически сгенерированный machineKey, который используется для шифрования / дешифрования / хеширования, будет отличаться на каждой машине, в результате чего билеты не будут распознаваться различными экземплярами вашего приложения.

Явное указание раздела machineKey в вашем web.config гарантирует, что все экземпляры вашего приложения будут обрабатывать заявку независимо от источника.

Создайте раздел machineKey здесь http://www.developmentnow.com/articles/machinekey_generator.aspx

и вставьте его в раздел <system.web> вашего приложения, чтобы все экземпляры вашего приложения использовали одинаковые ключи шифрования.

Это может решить вашу проблему.

2 голосов
/ 18 мая 2010

Нашел решение по этому Блогу . Вот тезисы:

Хорошо известно, что при работе в веб-ферме необходимо указывать одну и ту же запись ключа машины. Это связано с тем, что такие вещи, как FormsAuthTicket или AntiForgeryToken в ASP.NET MVC по умолчанию используют значения ключей компьютера для шифрования данных. В противном случае пользователь будет перенаправлен обратно в форму входа в систему, или проверка не удастся, когда они сбалансированы по нагрузке на другой сервер. Это происходит, когда дешифрованные результаты не соответствуют cookie в случае FormsAuth. Заставлять пользователя постоянно задаваться вопросом, почему он должен входить снова и снова.

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

...