- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
当我尝试在 MVC Web 应用程序中使用 Unity 解析 SignalR 集线器时,遇到了一个非常烦人的 ResolutionFailedException 错误。我的代码如下所示。
我的 Bootstrap 类
public static class Bootstrapper
{
public static IUnityContainer Initialise()
{
var container = BuildUnityContainer();
var unityDependencyResolver = new UnityDependencyResolver(container);
//Used for MVC
DependencyResolver.SetResolver(unityDependencyResolver);
//Used for SignalR
GlobalHost.DependencyResolver = new SignalRUnityDependencyResolver(container);
return container;
}
private static IUnityContainer BuildUnityContainer()
{
var container = new UnityContainer();
// register all your components with the container here
// it is NOT necessary to register your controllers
// e.g. container.RegisterType<ITestService, TestService>();
RegisterTypes(container);
return container;
}
public static void RegisterTypes(IUnityContainer container)
{
//Repositories
container.RegisterType<ChatMessageRepository>();
//Services
container.RegisterType<CapturePoolService>();
container.RegisterType<HistoricalDataService>();
//Context
container.RegisterType<ICustomPrincipal, CustomPrincipal>(new PerRequestLifetimeManager());
container.RegisterType<IDatabaseFactory, DatabaseFactory>(new PerRequestLifetimeManager());
container.RegisterType<UnitOfWork>(new PerRequestLifetimeManager());
//Hubs
container.RegisterType<ChatHub>(new InjectionFactory(CreateChatHub));
}
private static object CreateChatHub(IUnityContainer container)
{
return new ChatHub(container.Resolve<ChatMessageRepository>(), container.Resolve<UnitOfWork>());
}
}
我的聊天中心
public class ChatHub : Hub
{
private readonly ChatMessageRepository _chatMessageRepository;
private readonly UnitOfWork _unitOfWork;
public ChatHub(
ChatMessageRepository chatMessageRepository,
UnitOfWork unitOfWork)
{
_chatMessageRepository = chatMessageRepository;
_unitOfWork = unitOfWork;
}
}
现在,我有几个不同的 View ,每个 View 都使用聊天中心的一个实例(例如,将其视为单独的聊天室,它们都使用我的中心中编写的相同逻辑)。当我进入这些“房间”之一时,我的逻辑按预期工作。但是,当我离开该页面并转到应用程序中的任何其他页面时,就会出现问题。错误如下:
Resolution of the dependency failed, type = "Core.Repositories.ChatMessageRepository", name = "(none)".
Exception occurred while: while resolving.
Exception is: InvalidOperationException - Operation is not valid due to the current state of the object.
At the time of the exception, the container was:
Resolving Repositories.ChatMessageRepository,(none)
Resolving parameter "dbFactory" of constructor Repositories.ChatMessageRepository(Library.IDatabaseFactory dbFactory)
Resolving Context.DatabaseFactory,(none) (mapped from Library.IDatabaseFactory, (none))
它由我的 SignalRUnityDependencyResolver 触发
public override Object GetService(Type serviceType)
{
return _container.IsRegistered(serviceType) ? _container.Resolve(serviceType): base.GetService(serviceType);
}
特别是“_container.Resolve(serviceType)”调用。
有人可以帮忙吗?
谢谢。
最佳答案
我通过向 HierarchicalLifetimeManager 注册我的集线器解决了这个问题。
关于asp.net-mvc - SignalR Hub ResolutionFailedException 与 Unity,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19984907/
我正在使用 Patterns and Practices 的 Unity 将依赖项注入(inject)我的对象,并且遇到了一个奇怪的(无论如何对我来说)问题。这是我的类定义: public class
我有以下代码: public static IEngine CreateEngine() { UnityContainer container = Unity.LoadUni
我想知道,是否有可能要求 Unity“在解析时不包装任何用户异常”? 真的,为什么 Unity 对 ResolutionFailedException 进行包装?它正在改变“构建服务契约(Contra
我使用的是 ServiceLocator我正在使用 Unity public ServiceLocator(IUserStore userStore, IProdcutsStore productsS
安装我的 WPF 应用程序后,我尝试运行该应用程序,它崩溃并在事件查看器中记录以下错误。有人有想法吗? '-----------------------------------------------
我的 WebApp 是 WebForms 页面和 MVC 4 页面的组合。 使用 Unity,我遇到以下异常。 异常类型: Microsoft.Practices.Unity.ResolutionFa
当我尝试在 MVC Web 应用程序中使用 Unity 解析 SignalR 集线器时,遇到了一个非常烦人的 ResolutionFailedException 错误。我的代码如下所示。 我的 Boo
我是一名优秀的程序员,十分优秀!