【发布时间】:2013-12-20 14:34:44
【问题描述】:
在 Global.asax 的 Application_Start 中,我有以下内容
ObjectFactory.Initialize(cfg => {
cfg.For<IDependencyResolver>().Singleton().Add<StructureMapDependencyResolver> ();
});
我的 Hub 界面是
public interface IDashboardHub
{
void Initialize();
}
我的hub如下:
public class DashboardHub : Hub, IDashboardHub
{
private readonly ICpeAccountService _accountService;
public DashboardHub(ICpeAccountService service)
{
_accountService = service;
}
[Authorize]
public void Initialize()
{
Clients.All.UpdateStatus("Hello World!!!");
}
}
如果我删除注入的构造函数和解析器,那么我会收到“Hello World”信号,JavaScript 会显示该值。如果我只是删除解析器,那么 signalR 将不再找到无参数构造函数,并且不会调用 Initialize 方法。
如果我包含 StructureMap 依赖解析器(它现在正在工作并注入大约 40 个其他类),那么我会收到以下异常消息
StructureMap configuration failures: Error: 104
Source: Registry: StructureMap.Configuration.DSL.Registry, StructureMap,
Version=2.6.4.0, Culture=neutral, PublicKeyToken=e60ad81abae3c223
Type Instance '87da3c00-4deb-4334-b189-021d445d95ec'
(Configured Instance of App.DependencyResolution.StructureMapDependencyResolver,
App, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null)
Cannot be plugged into type Microsoft.AspNet.SignalR.IDependencyResolver,
Microsoft.AspNet.SignalR.Core, Version=2.0.0.0, Culture=neutral,
PublicKeyToken=31bf3856ad364e35
另外,如果我尝试在 startup.cs 中解决这一切,像这样:
public void Configuration(IAppBuilder app)
{
ObjectFactory.Initialize(cfg =>
{
cfg.For<IDependencyResolver>()
.Singleton()
.Add<StructureMapDependencyResolver>();
});
app.MapSignalR();
}
我也遇到同样的错误。
有人能解决这个问题吗?
【问题讨论】:
标签: c# asp.net-mvc-4 dependency-injection signalr structuremap