【问题标题】:SignalR, MEF and Dependency Injection working togetherSignalR、MEF 和依赖注入一起工作
【发布时间】:2013-10-27 03:57:21
【问题描述】:

我正在尝试让 SignalR、MEF 和 MVC 一起工作。

这是我的解析器类:

public class SignalRDependencyResolver : DefaultDependencyResolver
{
    private readonly CompositionContainer _container;

    public SignalRDependencyResolver(CompositionContainer container)
    {
        _container = container;
    }

    public override object GetService(Type serviceType)
    {
        if (serviceType == null)
        {
            throw new ArgumentNullException("serviceType");
        }

        var name = AttributedModelServices.GetContractName(serviceType);
        var export = _container.GetExportedValueOrDefault<object>(name);
        return export;
    }

    public override IEnumerable<object> GetServices(Type serviceType)
    {
        if (serviceType == null)
        {
            throw new ArgumentNullException("serviceType");
        }

        var exports = _container.GetExportedValues<object>(AttributedModelServices.GetContractName(serviceType));
        return exports;
    }
}

这是我的 Owin 启动:

public class Startup
{
    public void Configuration(IAppBuilder app)
    {
        var resolver = new SignalRDependencyResolver(MefConfigWeb.Container);
        var config = new HubConfiguration
        {
            Resolver = resolver,
        };

        app.MapSignalR(config);
    }
}

我可以中断 Startup 类并查看容器确实包含我的导出。但是,Visual Studio 提示异常:

第 244 行第 13 列未处理的异常 http://localhost:3928/Scripts/jquery.signalR-2.0.0.js

0x800a139e - JavaScript 运行时错误:SignalR:加载集线器时出错。 确保您的集线器参考正确,例如.

如果我没有设置我的自定义依赖解析器并在 Hub 类中新建我的依赖项,该应用程序可以正常工作。

我正在学习本教程:http://www.asp.net/signalr/overview/signalr-20/extensibility/dependency-injection

任何想法为什么这不起作用?

【问题讨论】:

    标签: model-view-controller dependency-injection signalr mef


    【解决方案1】:

    当你没有服务时,你需要调用基础实现。

    【讨论】:

    • 谢谢,现在可以使用了。我想我的后续问题是为什么我必须在集线器类上添加一个导出属性才能使我的进口水合?当解析器查看中心类并看到需要导入的属性时,它不应该这样做吗?
    • 你需要问 MEF 的设计者这个问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-09-22
    • 1970-01-01
    • 2019-12-03
    • 2015-10-10
    • 2021-04-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多