【问题标题】:Getting InRequestScope working with Ninject and WebApi让 InRequestScope 与 Ninject 和 WebApi 一起工作
【发布时间】:2013-12-27 04:37:43
【问题描述】:

我有一个 MVC4/WebApi 项目,我正在尝试与 Ninject 3 连接。我想在请求范围内的多个实体之间共享一个特定对象,但是我知道我需要提供一些InRequestScope (https://stackoverflow.com/a/10592203/173225) 的某种实现。我查看了 GitHub 上的源代码,它似乎只是返回 HttpContext.Current。我试过了:

var messages = new List<string>();
kernel.Bind<IList<string>>()
    .ToMethod(x => messages)
    .WhenMemberHas<ServiceResultMessagesAttribute>()
    .InScope(x => HttpContext.Current);

没有运气。我还尝试按照https://groups.google.com/d/msg/ninject/rC2vhj8yvBU/NAIkNA-QrAAJ 中的建议为 Ninject.Web.WebApi (#9018) 使用最新的“不稳定”Nuget 包,但我得到了同样的错误(get_InRequestScope 方法没有实现)。

至于 GitHub 上的来源,在撰写相关文件的最后一次更新时是 11 个月到一年多以前,所以我不知道这是否与不稳定的 Nuget 包一起使用(特别是考虑到 Ninject 的文档状态)。

谁能提供一个适当的工作示例,说明如何在请求范围内的多个组件中注入同一对象实例?

谢谢。

【问题讨论】:

    标签: asp.net-web-api ninject


    【解决方案1】:

    您将需要来自 nuget 或其他地方的 Ninject.Web.Common 引用并使用 InRequestScope 方法。

    var messages = new List<string>();
        kernel.Bind<IList<string>>()
            .ToMethod(x => messages)
            .WhenMemberHas<ServiceResultMessagesAttribute>()
            .InRequestScope();
    

    【讨论】:

    • 感谢您的回答。我可能无法验证这一点,因为 a) 我忘记了我试图让它工作的具体实例,b) 我们早就转向 Autofac,它可以轻松实现我们需要的功能.如果我可以挖掘一些示例代码来证明问题,一旦我可以验证它,我会接受这个答案。
    猜你喜欢
    • 2015-03-27
    • 1970-01-01
    • 2020-02-21
    • 1970-01-01
    • 1970-01-01
    • 2011-12-11
    • 2023-03-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多