Обычно это происходит, когда вы не указываете имя для атрибута "applicationName" поставщика членства. Это заставит поставщика Членства использовать путь vroot вашего веб-сервера.
В приведенном ниже примере вы можете увидеть значение по умолчанию атрибута applicationName, если оно не указано:
<membership>
<providers>
<clear/>
<add name="AspNetSqlMembershipProvider"
type="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
connectionStringName="LocalSqlServer"
enablePasswordRetrieval="false"
enablePasswordReset="true"
requiresQuestionAndAnswer="true"
requiresUniqueEmail="false"
passwordFormat="Hashed"
maxInvalidPasswordAttempts="5"
minRequiredPasswordLength="7"
minRequiredNonalphanumericCharacters="1"
passwordAttemptWindow="10"
passwordStrengthRegularExpression=""
applicationName="/"
/>
</providers>
Итак, если вы, например, перемещаете свое приложение из одной папки в другую, в базе данных участников создается новое приложение.
Способ решить эту проблему - дать имя вашему атрибуту applicationName.
Если у вас уже есть данные о членстве, которые вы хотите использовать, вы можете назвать атрибут как одно из существующих имен приложений. Это столбец «ApplicationName» таблицы «aspnet_Application».
У ScottGu был хороший пост на эту тему здесь:
Всегда устанавливайте свойство applicationName при настройке членства в ASP.NET 2.0 и других провайдеров