Почему CreateUserWizard Control автоматически добавляет базу данных ASPNETDB.MDF?

Я хочу использовать CreateUserWizard Control только для сбора информации от пользователя и вставки в мою настраиваемую базу данных. Я не хочу использовать членство в Asp.Net.

Когда я добавляю этот параметр в web.config <membership> <providers> <clear /> </providers> </membership>

Появляется следующая ошибка Default Membership Provider must be specified.

И когда я удаляю эту настройку из web.config. Страница работает успешно, НО createUserWizard Control автоматически добавляет базу данных ASPNETDB.MDF в папку App_Data.

Вопрос: Можем ли мы использовать CreateUserWizard с пользовательской базой данных без использования ASPNETDB или членства в asp.net?


person Waqar Janjua    schedule 23.07.2011    source источник


Ответы (2)


Элемент управления CreateUserWizard предоставляет пользовательский интерфейс для объекта MembershipProvider, который взаимодействует с хранилищем пользовательских данных вашего веб-сайта для создания новых учетных записей пользователей в хранилище данных. CreateUserWizard полагается на MembershipProvider для создания пользователя и отключения его при необходимости (см. msdn).

Таким образом, вам нужно использовать поставщика членства, если вы используете CreateUserWizard.

Если вы не хотите использовать стандартный поставщик членства, вам следует подумать о создании настраиваемого членства Провайдер.

Но из вашего вопроса непонятно, почему вы не хотите использовать стандартное членство. Возможно, стоит рассмотреть возможность включения стандартной схемы членства в вашу собственную базу данных и сэкономить много времени (не говоря уже о возможных проблемах безопасности и т. Д.), Используя функциональные возможности авторизации, которые уже реализованы в asp.net. Здесь вы можете узнать, как чтобы поместить схему членства в ту же базу данных, что и данные приложения.

ОБНОВЛЕНИЕ:

Если вы по-прежнему хотите, чтобы шаг CreateUserWizard CreateUser не создавал пользователя с помощью поставщика членства, вы можете попытаться обработать событие CreatingUser и установить для его свойства LoginCancelEventArgs.Cancel значение true.

Пример кода:

protected void RegisterUser_CreatingUser(object sender, LoginCancelEventArgs e) 
{
 e.Cancel = true; 
} 

Затем, чтобы перейти на следующую страницу мастера, вам необходимо обработать событие NextButtonClick:

  1. Добавьте e.Cancel = False;
  2. Добавьте CreateUserWizard.ActiveStepIndex = (указатель вашего следующего шага мастера);

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

Надеюсь, поможет.

person Kirill    schedule 23.07.2011
comment
Я хочу использовать Createuserwizard, поскольку использую элемент управления текстовым полем. Я не хочу использовать MembershipProvider. Можно ли пользоваться без членства? поскольку мы используем стандартные элементы управления asp.net, такие как метка, текстовое поле и т. д. - person Waqar Janjua; 23.07.2011
comment
Просто используйте обычный asp: Wizard вместо управления. Поместите на него пару текстовых полей и пару валидаторов и сохраните пользовательские данные на FinishButtonClick самостоятельно. Обратитесь к этому руководству для получения более подробной информации. - person Kirill; 23.07.2011

У меня была та же проблема, что я хотел, чтобы таблицы членства, представления и хранимая процедура находились в моей базе данных, поэтому вам нужно запустить следующую команду, используя командную строку Visual Studio, и написать следующую командную строку:

Aspnet_regsql.exe -W

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

введите описание изображения здесь

Затем вам нужно будет обновить файл web.config, чтобы обновить строку подключения, которая указывает на файл .mdf по строке подключения к базе данных.

person Samir Adel    schedule 23.07.2011
comment
Спасибо за ответ. Я не хочу использовать таблицы членства. Я хочу использовать только мастер создания пользователя. - person Waqar Janjua; 23.07.2011
comment
Чтобы использовать элемент управления мастера создания пользователя, необходимо сохранить информацию о созданном пользователе в базе данных, и поэтому asp.net добавил файл .mdf в ваш app_data, чтобы сохранить необходимую информацию, чтобы иметь возможность использовать мастер создания пользователя. нужны таблицы базы данных для хранения этой информации. - person Samir Adel; 23.07.2011
comment
да, но я не хочу хранить информацию о пользователе в таблицах aspnetdb. Я создаю новую базу данных test и таблицу User. Я хочу хранить информацию о пользователе в таблице User. Я не хочу добавлять таблицы aspnetdb в свой тест базы данных. Почему createuserwizard зависит от членства в aspnetdb или asp.net? - person Waqar Janjua; 23.07.2011
comment
Это зависит от поставщика членства ASP.Net, но для того, чтобы делать то, что вы хотите, вам нужно будет написать своего собственного поставщика членства для сопоставления с вашей собственной таблицей. Если вы действительно хотите использовать таблицы членства ASP.Net в своей собственной БД, вы можете использовать инструмент под названием aspnet_regsql.exe (доступный в вашем каталоге C: \ Windows \ Microsoft.Net \ Framework \ V2), чтобы добавить стандартные таблицы членства в ваша собственная база данных. - person ITHedgeHog; 23.07.2011