У меня возникли проблемы с настройкой инъекции зависимостей для моделей в Web API 2.2. В частности, способ, которым я в настоящее время это делаю, приводит к любым зависимостям «InstancePerLifetimeScope», действующим как зависимости «SingleInstance».Autofac InstancePerLifetimeScope в моделях Web API
Вот что я сейчас делаю с моим 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 происходит до создания области запроса. Это объясняет описанное выше поведение, но я не уверен, как обойти это.
Можете ли вы показать код, в котором вы устанавливаете распознаватель контракта, чтобы он привык? –