2009-06-23 2 views
1

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

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

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

Благодаря

Doug

ответ

7

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

Always set the "applicationName" property when configuring ASP.NET 2.0 Membership and other Providers