Abd*_*GIN 3 structuremap signalr
我该如何解决这个错误?
版本
Microsoft.AspNet.SignalR.Core 2.2.0,structuremap 3.1.4.143
global.asax signalR依赖解析
// SIGNALR DEPENDENCY RESOLVER
GlobalHost.DependencyResolver = new StructureMapSignalRDependencyResolver(Container ?? ObjectFactory.Container);
Run Code Online (Sandbox Code Playgroud)
StructureMapSignalRDependencyResolver
public class StructureMapSignalRDependencyResolver : DefaultDependencyResolver
{
private readonly IContainer _container;
public StructureMapSignalRDependencyResolver(IContainer container)
{
_container = container;
}
public override object GetService(Type serviceType)
{
object service = null;
//Below is a key difference between this StructureMap example, GetInstance is used for concrete classes.
if (!serviceType.IsAbstract && !serviceType.IsInterface && serviceType.IsClass)
{
//If the type is a concrete type we get here...
service = _container.GetInstance(serviceType);
}
else
{
// Non concrete resolution which uses the base dependency resolver if needed.
service = _container.TryGetInstance(serviceType) ?? base.GetService(serviceType);
}
return service;
}
public override IEnumerable<object> GetServices(Type serviceType)
{
var objects = _container.GetAllInstances(serviceType).Cast<object>();
return objects.Concat(base.GetServices(serviceType));
}
}
Run Code Online (Sandbox Code Playgroud)
erorr
没有注册默认实例,无法自动确定类型为"Microsoft.AspNet.SignalR.Messaging.IMessageBus"
没有为Microsoft.AspNet.SignalR.Messaging.IMessageBus指定配置
1.)新AckSubscriber(IMessageBus的默认,IAckHandler的默认)2.)3. Microsoft.AspNet.SignalR.Infrastructure.AckSubscriber)Microsoft.AspNet.SignalR.Infrastructure.AckSubscriber 4.)Container.GetInstance(的实例Microsoft.AspNet .SignalR.Infrastructure.AckSubscriber)


小智 5
首先尝试从基类解析.
public override object GetService(Type serviceType)
{
if (serviceType == null)
return null;
var service = base.GetService(serviceType);
if (service != null) return service;
return (!serviceType.IsAbstract && !serviceType.IsInterface && serviceType.IsClass)
? container.GetInstance(serviceType)
: container.TryGetInstance(serviceType);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1079 次 |
| 最近记录: |