ユーザーがパッシブacsを使用してアプリケーションにサインオンしたことを検出できるようにしたいので、アプリを初めて使用する場合にデータベースに追加できます。現在、WSFederationAuthenticationModule.SignedInを購読していますが、何かが足りないと感じています。主に、イベントをサブスクライブするのに最適な場所がわかりません。PostAuthenticateRequest内で機能するようになりましたが、少しハッキーです。助言がありますか?
このコードはglobal.asaxからのものです
public override void Init()
{
base.Init();
PostAuthenticateRequest += (s, e) =>
{
try
{
FederatedAuthentication.WSFederationAuthenticationModule.SignedIn -= SignedIn;
}
finally
{
FederatedAuthentication.WSFederationAuthenticationModule.SignedIn += SignedIn;
}
};
}
private void SignedIn(object sender, EventArgs e)
{
//do something
}
編集:
今のところ、フラグ変数を使用して、SignedInに一度だけサブスクライブするようにします。誰かが他に何か提案がない限り:)サンドリーノの助けに感謝します。これが私が今持っているものです。
private static bool isFirstRequest = true;
public override void Init()
{
base.Init();
PostAuthenticateRequest += (s, e) => {
if (isFirstRequest)
{
FederatedAuthentication
.WSFederationAuthenticationModule.SignedIn += SignedIn;
isFirstRequest = false;
}
};
}
private void SignedIn(object sender, EventArgs e)
{
//do something
}
編集: もう少し情報。この問題は、Azureエミュレーターを使用している場合に発生します。おそらく、デプロイされたときにも発生しますが、試したことはありません。テキストファイルに書き込もうとしてデバッグできず、テキストファイルが作成されていないかどうかをテストしました。