Пользовательская база данных веб-администратора asp.net - PullRequest
2 голосов
/ 02 октября 2009

Я застрял здесь в проблеме и мне нужен чей-то намек. Я использую свою собственную базу данных SQL Server для управления пользователями и ролями (в отличие от базы данных aspnet). Он работал нормально, пока я не добавил некоторые настраиваемые поля в таблицу aspnet_membership. После этого я не могу создать нового пользователя с помощью инструмента веб-администрирования asp.net. Выдается следующее исключение:

Произошла ошибка. Пожалуйста, вернитесь на предыдущую страницу и попробуйте снова.

Следующее сообщение может помочь в диагностике проблемы: Исключение было выдано целью вызова. в System.RuntimeMethodHandle._InvokeMethodFast (Объектная цель, аргументы Object [], SignatureStruct & sig, MethodAttributes methodAttributes, RuntimeTypeHandle typeOwner) в System.RuntimeMethodHandle.InvokeMethodFast (метод метода ObjectTyndTimeTyTeindToTextOHTyTegetTyTextEHTyTegeTyTestEgTyTeTeTestHeTeTeTesTigTyTeTesTigTigTeTesTigTigTeTesteGTT)) и т. е. метод .Reflection. КультураInfo) в System.Web.Administration.WebAdminMembershipProvider.CallWebAdminMembershipProviderHelperMethodOutParams (параметры String methodName, Object [], тип [] paramTypes) в System.Web.Administration.WebAdminMembership String пароль, имя_пользователя_перечисления, пароль_пользователя, связывание_буксвисиринг () Строковый парольОтвет, Boolean isApproved, Object pro viderUserKey, MembershipCreateStatus & status) в System.Web.UI.WebControls.CreateUserWizard.AttemptCreateUser () в System.Web.UI.WebControls.CreateUserWizard.OnNextButtonClick (объект WizardNavigationEventArebOWE.Web.WEE.WEE.Web.WEE.WEE.WEE.WEE.WEE.Web.WEE.WEE.WEE.WEE.WEE.WEE.WEE.Web.WEE.WEE.WE.WEE.WEE.WE.WE.WEE.WEE. , EventArgs e) в System.Web.UI.WebControls.CreateUserWizard.OnBubbleEvent (Источник объекта, EventArgs e) в System.Web.UI.WebControls.Wizard.WizardChildTable.OnBubbleEvent (Исходный объект, аргументы EventArgs) в System.Web.UI .Control.RaiseBubbleEvent (Источник объекта, аргументы EventArgs) в System.Web.UI.WebControls.Button.OnCommand (CommandEventArgs e) в System.Web.UI.WebControls.Button.RaisePostBackEvent (String eventArgument) в System.Web.UI. WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent (String eventArgument) в System.Web.UI.Page.RaisePostBackEvent (IPostBackEventHandler sourceControl, строковое событие EventArgument) в System.Web.UEostPlayBortEvent (). .Web.UI.Page.ProcessRe questMain (логическое значение includeStagesBeforeAsyncPoint, логическое значение includeStagesAfterAsyncPoint)

Это происходит только во время создания пользователя. Все остальное работает нормально. Я уже попробовал снова запустить утилиту aspnet_regsql. Любые другие предложения? Любая помощь будет оценена по достоинству.

- Али

Ответы [ 3 ]

1 голос
/ 02 октября 2009

Допускаются ли в дополнительных столбцах нулевые значения? Вы определили подходящие значения по умолчанию, если они не?

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

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


Изменить, чтобы ответить на Комментарии Али

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

Однако - основная проблема, которую я вижу при вашем подходе, состоит в том, что если вы используете стандартные элементы управления Login, пользователь все равно может войти в систему изначально, а затем вам нужно будет проверить значение поля Deleted в либо обработчики событий LoggingIn (до аутентификации) или LoggedIn (после) - вам, возможно, удастся изменить встроенное свойство IsApproved для обработки этого по умолчанию.

1 голос
/ 02 октября 2009

Предположительно, какие из полей, которые вы добавили, определены как Не NULL и не имеют значений по умолчанию?

Если это так, убедитесь, что вы заполнили их в коде, который добавляет пользователя.

0 голосов
/ 02 октября 2009

Спасибо, Жаф и Одед. Значения NULL были проблемой. Но Жаф указал на другую проблему, которую я хотел бы узнать больше. Дополнительные подробности похожи на isDeleted, где я просто отмечаю isDeleted как true, фактически не удаляя пользователя, а затем некоторые релевантные детали для аудита, такие как deleByUser, dateDeleted и т.д. Я не обновлял хранимые процедуры, которые записывают в таблицы членства. Вместо этого у меня есть несколько дополнительных SP, которые заполняют дополнительные детали, как только пользователь создан. Является ли это (сохранение поля в таблице членства и написание новых процедур) правильным подходом?

...