私は2つのDBがある古いWebアプリケーションでいくつかのメンテナンスを行っています。 1つはWWWフロントエンド(DotNetNuke)用で、もう1つは管理バックエンド用です。どちらのアプリケーションもユーザーのためにaspnet_membershipを使用しており、アプリケーション間でログインを同期したいと考えています。私はトリガーでこれを行うと思っていましたが、トリガーを追加するとログインが失敗します。aspnet_membershipでトリガを作成するとログインに失敗する
USE dnnTicket
GO
CREATE TRIGGER update_membership ON dbo.aspnet_Membership
AFTER UPDATE
AS
SET NOCOUNT ON
IF (trigger_nestlevel() > 1) RETURN --Make sure a similar trigger on the other db don't cause infinite loops.
UPDATE ticket4you.dbo.aspnet_Membership SET
[Password] = INSERTED.[Password],
PasswordFormat = INSERTED.PasswordFormat,
PasswordSalt = INSERTED.PasswordSalt,
MobilePIN = INSERTED.MobilePIN,
Email = INSERTED.Email,
LoweredEmail = INSERTED.LoweredEmail,
PasswordQuestion = INSERTED.PasswordQuestion,
PasswordAnswer = INSERTED.PasswordAnswer ,
IsApproved = INSERTED.IsApproved ,
IsLockedOut = INSERTED.IsLockedOut ,
CreateDate = INSERTED.CreateDate ,
LastLoginDate = INSERTED.LastLoginDate ,
LastPasswordChangedDate = INSERTED.LastPasswordChangedDate,
LastLockoutDate = INSERTED.LastLockoutDate ,
FailedPasswordAttemptCount = INSERTED.FailedPasswordAttemptCount ,
FailedPasswordAttemptWindowStart = INSERTED.FailedPasswordAttemptWindowStart ,
FailedPasswordAnswerAttemptCount = INSERTED.FailedPasswordAnswerAttemptCount ,
FailedPasswordAnswerAttemptWindowStart = INSERTED.FailedPasswordAnswerAttemptWindowStart
FROM INSERTED
WHERE ticket4you.[dbo].aspnet_Membership.UserId = INSERTED.userID
SET NOCOUNT OFF
GO
dnnTicketデータベースを使用するDBログインでこのトリガーが失敗します。
私は可能な限り最善の方法でSQLサーバの動作をトレースし、Webサーバでクエリが実行されてからSMMSから同じクエリを手動で実行するまでトレースに非常に奇妙な違いがあることを発見しました。トリガがOKに見える一見
設定がアプリの間で同じではありません。 (1つのDBが異なる)、マシンキーの意味は? – devzero
DNNイベントビューアは、ログイン、イベントに関連するすべてのエラーメッセージを記録していませんが、設定されています。 Log4net私はあなたが何を意味するのか分かりません。 SQLプロファイラはエラーを報告しません。私が得るエラーメッセージは、 "Innlogging feilet"です。解決策でこのエラーテキストを見つけることができません。DBのどこかにあるかもしれませんか? – devzero
メンバーシッププロバイダーは、db以外のすべての同じ設定が必要です。マシンキー(http://msdn.microsoft.com/en-us/library/ff649308.aspx)は、パスワードを暗号化/ハッシュするために使用されます。両方のアプリケーションで同じでない場合、パスワードは機能しません。 – ScottS