lazy load AR 官的方案是 BeginRequest += new EventHandler(OnBeginRequest); EndRequest += new EventHandler(OnEndRequest); // Initialization code omitted } protected void Application_End(object sender, EventArgs e) { } public void OnBeginRequest(object sender, EventArgs e) { // HttpContext.Current.Items.Add("nh.sessionscope", new SessionScope()); } public void OnEndRequest(object sender, EventArgs e) { //try //{ // SessionScope scope = HttpContext.Current.Items["nh.sessionscope"] as SessionScope; // if (scope != null) // { // scope.Dispose(); // } //} //catch (Exception ex) //{ // HttpContext.Current.Trace.Warn("Error", "EndRequest: " + ex.Message, ex); //} } 但我用这个办法,后来建了个PageBase.csusing System;using System.Data;using System.Configuration;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.WebControls;using System.Web.UI.WebControls.WebParts;using System.Web.UI.HtmlControls;using Castle.ActiveRecord;namespace Wz16.WebApp{ public class PageBase : System.Web.UI.Page { protected SessionScope CurSessionScope ; protected override void OnInit(EventArgs e) { CurSessionScope = new SessionScope(); base.OnInit(e); } public override void Dispose() { try { if (CurSessionScope != null) { CurSessionScope.Dispose(); } } catch (Exception ex) { HttpContext.Current.Trace.Warn("Error", "EndRequest: " + ex.Message, ex); } base.Dispose(); } }} 继承自PageBase.cs的页面就都支持 AR 的 Lazy Load 我用的 asp.net2.0 为什么官方的方案会不行,有知道的人请赐教。