Членство в ASP.NET - 2 записи идентификатора приложения - PullRequest
1 голос
/ 24 июня 2009

У меня сайт ASP.NET в разработке на моем компьютере. Он имеет свою собственную базу данных sqlserver. По некоторым причинам система провайдера членства, кажется, создает две записи приложения для проекта. Это вызывает у меня проблемы, поскольку система членства создает две записи, по одной для каждой записи приложения, для каждого пользователя в системе. Почему это происходит и как мне его отключить?

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

Любые предложения или ссылки будут оценены.

Спасибо

Doug

1 Ответ

7 голосов
/ 24 июня 2009

Обычно это происходит, когда вы не указываете имя для атрибута "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 и других провайдеров

...