ログイン ページを呼び出す前にいくつかのライセンス チェックを実行する asp.net Web アプリケーションがあります。製品にライセンスが付与されていない場合は、エラーの詳細とともに abc.aspx ページに移動します。このライセンス チェックは、web.config を介して構成された HttpModule です。
コンテキスト認証用のイベント ハンドラーがあります。abc.aspx ページが呼び出されるたびに、このイベントが複数回発生し、ページの読み込みは発生しません。
Init で、このコードを使用してイベント ハンドラーを追加します。
context.AuthenticateRequest += new EventHandler
HTML ページを使用すると、この問題は発生しないようです。xyz.aspx などの他の aspx ページを使用しても問題は存在します...
この認証を n 回実行しないようにするにはどうすればよいでしょうか。HttpContext.Current.Response.End() を試してみましたが、無限呼び出しは停止しますが、ページが読み込まれず、ページが空白に見えます。
誰でもこの問題について何か考えがありますか?
Global.asax のスニペット。
<%@ Application Language="C#" Inherits="Microsoft.Practices.CompositeWeb.WebClientApplication" %>
<script runat="server">
private static bool _initializedAlready = false;
private static readonly Object s_lock = new Object();
//fires once on asp.net worker process start
protected override void Application_Start(object sender, EventArgs e)
{
}
protected void Application_BeginRequest(object sender, EventArgs e)
{
if (_initializedAlready)
{
return;
}
lock (s_lock)
{
if (_initializedAlready)
{
return;
}
//custom initialization code
base.Application_Start(sender, e);
_initializedAlready = true;
}
}
public override void Init()
{
base.Init();
//initialize the license module here....
licenseModule.Init(this);
}
</script>
ライセンスモジュールのinit()メソッド
public void Init(HttpApplication context)
{
context.AuthenticateRequest += new EventHandler(context_AuthenticateRequest);
}