【发布时间】:2016-01-23 13:53:28
【问题描述】:
在异步 ASP.NET Web API 方法中通过 Autofac 注入的对象的延迟实例化期间,我收到 ObjectDisposedException(无法解析实例,并且无法从此 LifetimeScope 创建嵌套生命周期,因为它已被释放)。
这是 Web API 方法:
Lazy<PrintHubSender> _printHubSender;
public async void Print(Guid orderId)
{
var order = await _orderNoSqlDbRepository.GetSingleAsync(o => o.Id == orderId);
_printHubSender.Value.PrintOrder(order); // This triggers the exception
}
Lazy 实例是通过 Web API 控制器构造函数注入的。 Autofac注册如下:
Type hubSender = ...
containerBuilder.RegisterType(hubSender)
.AsSelf()
.PropertiesAutowired()
.InstancePerRequest();
如果 ASP.NET Web API 方法不是异步的,则不会发生异常。
【问题讨论】:
标签: c# asp.net-web-api async-await autofac