【问题标题】:ASP.NET MVC Injecting Http/Request/Controller contextASP.NET MVC 注入 Http/Request/Controller 上下文
【发布时间】:2011-03-26 15:56:12
【问题描述】:

是否有在 ASP.NET MVC 应用程序中注入 Http/Request/Controller 上下文的推荐方法?

以前我只像这样使用 HttpContext 完成此操作(我正在使用 StructureMap):

For<HttpContextBase>().Use(ctx => new HttpContextWrapper(HttpContext.Current));

但是,在某些情况下,我还需要访问请求上下文。与其手动构建它,不如注入它。一个很好的例子是注入一个 UrlHelper(需要 RequestContext 和 RouteCollection)。

谢谢

【问题讨论】:

    标签: asp.net-mvc-3 structuremap httpcontext requestcontext


    【解决方案1】:

    您可能需要考虑是否真的要直接依赖这些上下文对象(它们往往会使依赖于它们的事物难以测试)。也就是说,您走在正确的轨道上:

    For<RequestContext>().Use(ctx => HttpContext.Current.Request.RequestContext);
    For<RouteCollection>().Use(ctx => RouteTable.Routes);
    

    【讨论】:

    • 嗨 Robin,我通常只对纯上下文对象有这些依赖关系,例如 SiteContext 上下文,它抽象了对当前用户等事物的访问。无论如何,我总是可以模拟 HttpContextBase。我也确实发现这篇文章看起来很有趣 - kozmic.pl/2010/05/22/…
    • 为什么它使测试变得更加困难,它们被注入所以可以被模拟? (我正要这样做,好吧我正要这样做)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多