Я использую Unity в качестве контейнера DI, и я не смог заставить его работать при разрешении концентраторов SignalR. Кто-нибудь имел успех в этом? Я попытался следующим:Использование UnityContainer в качестве Resalver Dependency SignalR
public class UnityDependencyResolver : DefaultDependencyResolver
{
private readonly IUnityContainer _Container;
public UnityDependencyResolver (IUnityContainer container)
{
_Container = container;
//edit to add
container.RegisterInstance<IJavaScriptMinifier>(NullJavaScriptMinifier.Instance);
}
public override object GetService(Type serviceType)
{
return base.GetService(serviceType) ?? _Container.Resolve(serviceType);
}
public override IEnumerable<object> GetServices(Type serviceType)
{
return base.GetServices(serviceType) ?? _Container.ResolveAll(serviceType);
}
}
, но я получаю сообщение об ошибке, указывающей, что не может решить SignalR.Infrastructure.IJavaScriptMinifier
Вы зарегистрировались в реализации 'IJavaScriptMinifier' с Unity? –
Я пробовал это после того, как я разместил это, но это было похоже на хак. (Я отредактирую сообщение, чтобы показать, как). Я не использую явно его использование, и это интерфейс SignalR. – timDunham
Возможно, вы явно не используете его в своем приложении. Но если ваша инфраструктура зависит от нее, а SignalR использует «DependencyResolver» для реализации «IJavaScriptMinifier», вам необходимо зарегистрировать его в своем контейнере. Я бы не зарегистрировал его внутри конструктора распознавателя, но вместе со всеми вашими зависимостями в корне приложения вашего приложения. –