【发布时间】:2015-08-30 11:29:59
【问题描述】:
我在为 Web API 2.2 中的模型设置依赖注入时遇到问题。具体来说,我目前这样做的方式会导致任何“InstancePerLifetimeScope”依赖项都表现为“SingleInstance”依赖项。
这是我目前使用 JSON.NET 解析器所做的事情:
public class AutofacContractResolver : DefaultContractResolver
{
private readonly IContainer _container;
public AutofacContractResolver(IContainer container)
{
_container = container;
}
protected override JsonObjectContract CreateObjectContract(Type objectType)
{
JsonObjectContract contract = base.CreateObjectContract(objectType);
if (_container.IsRegistered(objectType))
contract.DefaultCreator = () => _container.Resolve(objectType);
return contract;
}
}
_container.Resolve(objectType) 为每个请求解析相同的实例。这造成了严重破坏,因为我现在在两个不同的会话上运行服务,其中一个已经过时了。
我认为 Resolve 调用是在创建请求范围之前发生的。它将解释上述行为,但我不确定如何解决这个问题。
【问题讨论】:
-
你能展示你设置合约解析器的代码吗?