Попробуйте следующие сценарии:
Шаг 1. User Defined Function для кодирования паролей и соли
CREATE FUNCTION [dbo].[base64_encode] (@data VARBINARY(MAX)) RETURNS VARCHAR(MAX) WITH SCHEMABINDING,
RETURNS NULL ON NULL INPUT BEGIN RETURN
(SELECT [text()] = @data
FOR XML PATH('')) END GO
Шаг 2. Хранимая процедура для создания пользователя членства
CREATE PROCEDURE [dbo].[CreateUser]
@UserName nvarchar(256)
, @ClearTextPassword nvarchar(128)
, @Email nvarchar(256)
, @pUserId uniqueidentifier
AS
BEGIN
DECLARE @ApplicationName nvarchar(256)
DECLARE @PasswordFormat int
DECLARE @UnencodedSalt uniqueidentifier
DECLARE @Password nvarchar(128)
DECLARE @PasswordSalt nvarchar(128)
DECLARE @Now DATETIME
DECLARE @UniqueEmail int
DECLARE @UserId uniqueidentifier
SET @ApplicationName = 'ApplicationName' --Find in aspnet_Applications.ApplicationName
SET @PasswordFormat = 1
SET @UnencodedSalt = NEWID()
SET @PasswordSalt = dbo.base64_encode(@UnencodedSalt)
SET @Password = dbo.base64_encode(HASHBYTES('SHA1',
CAST(@UnencodedSalt as varbinary(MAX))
+ CAST(@ClearTextPassword AS varbinary(MAX))))
SET @Now = getutcdate()
SET @UniqueEmail = 1
SET @[email protected]
BEGIN TRANSACTION
--DECLARE @UserId uniqueidentifier
EXECUTE [dbo].[aspnet_Membership_CreateUser]
@ApplicationName
,@UserName
,@Password
,@PasswordSalt
,@Email
,NULL
,NULL
,1 -- IsApproved == true
,@Now
,@Now
,@UniqueEmail
,@PasswordFormat
,@UserId OUTPUT
COMMIT
END
GO
Шаг 3. Создать пользователя
DECLARE @UserId uniqueidentifier
SET @UserId = NewId()
EXECUTE [dbo].[CreateUser]
'UserName' [email protected]
,'[email protected] '[email protected]
,'[email protected] '[email protected]
,@UserId --User's uniqueidentifier
Дополнительные примечания:
- Проверить ваше имя приложения правильно в вашем членстве web.config элемента.
- Помните о создании ролей и добавлении пользователя в роли.
НЕТ Я просто скопировал существующий пароль и соль от другого пользователя шахты и использовать его для этого нового пользователя, а также в вставной заявлении – PositiveGuy
«Membership провайдер/API «да, это то, что сломано в коде, и у меня нет времени исправить это прямо сейчас ... нужно создать пользователя сейчас для аварийного обслуживания/теста – PositiveGuy
@CoffeeAddict Хорошо, просто сделайте это. Создайте приложение, в котором есть файл конфигурации с connectionString, указывающий на вашу базу данных, раздел поставщика членства с использованием этой строки подключения (и вашего другого имени приложения) и roleManager с теми же подробностями. –