我正在尝试在我的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。
答案 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);
}
}