2011-11-21 31 views
1

我想在我的WCF应用程序中为每个请求设置一个Active Record Web会话。我在我的web.config这包括:SessionScopeWebModule在哪里?

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

这是从城堡文档推荐的解决方案:

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

但是它不工作,它给我的错误:

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

SessionScopeWebModule被移动了吗?我使用的是最新的AR的dll的.NET 4

回答

4

事实上SessionScopeWebModule被转移到一个名为Castle.ActiveRecord.Web一个单独的项目。这样做是为了使主要的Castle.ActiveRecord组件可以用于客户端配置文件目标。

所以添加到Castle.ActiveRecord.Web.dll参考,在配置类型更改为:

type="Castle.ActiveRecord.Framework.SessionScopeWebModule, Castle.ActiveRecord.Web" 
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); 
      } 
     }