2011-11-21 28 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); 
      } 
     }