4

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

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

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

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

谢谢

4

1 回答 1

4

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

For<RequestContext>().Use(ctx => HttpContext.Current.Request.RequestContext);
For<RouteCollection>().Use(ctx => RouteTable.Routes);
于 2011-03-28T17:11:08.690 回答