【发布时间】:2015-12-08 05:30:13
【问题描述】:
我需要添加一个 IIS 模块进行一些处理。这是我的模块:
namespace MyNamespace
{
public class MyModule : IHttpModule
{
#region IHttpModule Members
public void Dispose()
{
}
public void Init(HttpApplication context)
{
//I hope to do some work here ONLY once for all requests
context.ReleaseRequestState += new EventHandler(myHandler);
}
#endregion
public void myHandler(Object source, EventArgs e)
{
//do some work...
}
}
}
我需要在 Init() 方法中做一些消耗资源的工作。我希望 Init 在网站中只被调用一次,并且只有在网站在 IIS 管理器中重新启动时才会再次调用。
这方面的专家能否告诉我 Init() 是否按我希望的那样工作?
谢谢!
【问题讨论】:
-
对于任何正在执行的请求,它总是会调用此方法,所以不,这不是应用程序池第一次启动。您可能希望做的是在其中有一个静态变量,以查看它是否真的是第一次被击中,如果不是,请继续执行您需要的操作,否则忽略它。确保在将变量设置为 true 时锁定代码部分
-
@Ahmedilyas 所以 Init() 不能按我希望的方式工作,对吗?如果您发布您的回复作为答案。我会选择它。谢谢!
-
那是正确的......将在我的回答中解释更多
标签: iis iis-modules