2009-11-19 184 views

回答

3

听起来像你希望创建的映射在你的应用周期对象一次。这听起来像是你试图阻止每次请求反复创建。 (请说明是否我错了。)

请看IHttpModule上的方法。假设你正在使用IIS 7.0, the ASP.Net lifecycle将显示Init()方法被触发一次。意思是,它在每个应用程序生命周期中被触发一次因此,启动Web服务器,第一个请求将启动Init(),随后的请求不需要触发它,直到刷新Web服务器应用程序周期。

您应该能够安全地将您的映射创建代码移动到Init()方法中,该方法应该为您提供使用多线程单例初始化类型寻求的保护措施。你应该仍然在你的映射对象周围有多线程保护措施,但是IHttpModule的Init()方法应该为你提供你正在寻找的fire-once-done完成效果。

+0

是的,第一段是我想要完成的。我正在使用IIS 6.0,Init仍然有相同的行为? – blu 2009-11-19 23:14:58

+0

这似乎在IIS 6.0中表现相同,Init只被调用一次。 – blu 2009-11-19 23:31:37

+0

我相信IIS6表现出同样的行为,是的。 – jro 2009-11-19 23:59:47