SessionScopeWebModule在哪里?

时间:2011-11-21 15:53:55

标签: nhibernate activerecord castle-activerecord

我正在尝试在我的WCF应用中为每个请求设置一个Active Record网络会话。我把它包含在我的web.config中:

<httpModules>
      <add
          name="ar.sessionscope"
          type="Castle.ActiveRecord.Framework.SessionScopeWebModule, Castle.ActiveRecord" />
    </httpModules>

这是Castle docs推荐的解决方案:

http://www.castleproject.org/activerecord/documentation/trunk/usersguide/web.html

然而它不起作用,它给了我错误:

无法从程序集“Castle.ActiveRecord”加载“Castle.ActiveRecord.Framework.SessionScopeWebModule”类型。

SessionScopeWebModule被移动了吗?我正在使用.NET 4的最新AR dlls。

2 个答案:

答案 0 :(得分:4)

事实上,SessionScopeWebModule已移至名为Castle.ActiveRecord.Web的单独项目中。这样做是为了使主要的Castle.ActiveRecord程序集可用于客户端配置文件目标。

因此,添加对Castle.ActiveRecord.Web.dll的引用,并将配置中的类型更改为:

type="Castle.ActiveRecord.Framework.SessionScopeWebModule, Castle.ActiveRecord.Web"

答案 1 :(得分:0)

请注意,即使web.config解决方案没有:

,以下情况仍然有效
public void Application_BeginRequest(object sender, EventArgs e)
        {
            HttpContext.Current.Items.Add("ar.sessionscope", new SessionScope());
        }

        public void Application_EndRequest(object sender, EventArgs e)
        {
            try
            {
                var scope = HttpContext.Current.Items["ar.sessionscope"] as SessionScope;
                if (scope != null)
                    scope.Dispose();
            }
            catch (Exception ex)
            {
                HttpContext.Current.Trace.Warn("Error", "EndRequest: " + ex.Message, ex);
            }
        }