Я изо всех сил стараюсь сделать эту работу. У меня есть Unity и Unity.AspNet.WebApi пакеты (v 3.5.1404) установлены и ниже кода активации, который поставляется с пакетами
public static class UnityWebApiActivator
{
/// <summary>Integrates Unity when the application starts.</summary>
public static void Start()
{
var container = UnityConfig.GetConfiguredContainer();
var resolver = new UnityHierarchicalDependencyResolver(container);
GlobalConfiguration.Configuration.DependencyResolver = resolver;
// DynamicModuleUtility.RegisterModule(typeof(UnityPerRequestHttpModule));
}
/// <summary>Disposes the Unity container when the application is shut down.</summary>
public static void Shutdown()
{
var container = UnityConfig.GetConfiguredContainer();
container.Dispose();
}
}
и мой тип регистрации выглядит следующим образом:
public static void RegisterTypes(IUnityContainer container)
{
container.RegisterType<IAuditService, AuditService>(
new PerThreadLifetimeManager(),
new InjectionConstructor(new SecurityDbContext()));
}
До сих пор я не пробовал PerThreadLifetimeManager и TransientLifetimeManager. Я также получил пакет Unity.Mvc и попытался использовать PerRequestLifetimeManager, как было предложено msdn, но не повезло. Он всегда дает мне тот же экземпляр dbcontex.
Я скорее не включаю зависимость MVC, так как это просто WebApi, но когда я пытаюсь использовать Unity.Mvc, я также столкнулся с некоторыми ошибками времени выполнения.
У кого-нибудь есть хорошее предложение/пример для разрешения dbcontext для запроса с Unity в WebApi, желательно без какой-либо зависимости mvc?