我得到以下異常「無法解析實例,並且無法從此LifetimeScope中創建嵌套生命期,因爲它已被處置。」當我嘗試從global.asax Application_EndRequest事件解析對象時。我用Autofac在版本2.5.2.830autofac與asp.net webforms實例無法解析和嵌套生命期不能爲
public class Global : System.Web.HttpApplication, IContainerProviderAccessor
{
// Provider that holds the application container.
static Autofac.Integration.Web.IContainerProvider _containerProvider;
// Instance property that will be used by Autofac HttpModules
// to resolve and inject dependencies.
public Autofac.Integration.Web.IContainerProvider ContainerProvider
{
get { return _containerProvider; }
}
protected void Application_Start(object sender, EventArgs e)
{
var builder = new ContainerBuilder();
...
_containerProvider = new ContainerProvider(builder.Build());
}
protected void Application_BeginRequest(object sender, EventArgs e)
{
ISession session = _containerProvider.RequestLifetime.Resolve<ISession>();
session.BeginTransaction();
}
private void Application_EndRequest(object sender, EventArgs e)
{
ISession session = ContainerProvider.RequestLifetime.Resolve<ISession>();
}
我以這種方式登記:。
builder.Register(X => x.Resolve()的openSession())作爲()InstancePerHttpRequest() ; }
爲什麼要在EndRequest中解析會話?你打算在那裏結束會議嗎? – 2012-02-18 12:11:57
是的,我想提交交易和關閉會話。我嘗試使用autofac創建會話預先請求模式。 – 2012-02-18 12:55:08