是否有推荐的方法在ASP.NET MVC应用程序中注入Http / Request / Controller上下文?
以前我只用HttpContext这样做(我正在使用StructureMap):
For<HttpContextBase>().Use(ctx => new HttpContextWrapper(HttpContext.Current));
但是,在某些情况下,我还需要访问请求上下文。不是手动构建,而是注入它会很好。一个很好的例子是注入UrlHelper(需要RequestContext和RouteCollection)。
由于
本
答案 0 :(得分:4)
您可能想要考虑是否真的想直接依赖这些上下文对象(它们往往会使依赖它们的东西难以测试)。也就是说,你走在正确的轨道上:
For<RequestContext>().Use(ctx => HttpContext.Current.Request.RequestContext);
For<RouteCollection>().Use(ctx => RouteTable.Routes);