我有一个 asp.net Web 应用程序,它在调用登录页面之前执行一些许可证检查......如果产品没有获得许可,那么它会导航到带有一些错误详细信息的 abc.aspx 页面。此许可证检查是通过 web.config 配置的 HttpModule。
我有一个用于上下文身份验证的事件处理程序。每当调用 abc.aspx 页面时,都会多次触发此事件,并且页面加载永远不会发生。
在初始化时,我使用此代码添加事件处理程序
context.AuthenticateRequest += new EventHandler
当我使用 html 页面时,似乎不会出现此问题。即使我使用其他一些 aspx 页面,例如 xyz.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>
license模块的init()方法
public void Init(HttpApplication context)
{
context.AuthenticateRequest += new EventHandler(context_AuthenticateRequest);
}