ASP.NET MVC 注入 Http/Request/Controller 上下文

发布于 2024-10-27 00:57:38 字数 364 浏览 8 评论 0原文

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

以前我只使用 HttpContext 完成此操作,如下所示(我使用的是 StructureMap):

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

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

谢谢

Is there a recommended approach for injecting Http/Request/Controller context in an ASP.NET MVC application?

Previously I've only done this with HttpContext like so (I'm using StructureMap):

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

However, in some cases I also need to get access to the request context. Rather than building this manually, it would be nice to have it injected. A good example would be injecting a UrlHelper (requires RequestContext and RouteCollection).

Thanks

Ben

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

分分钟 2024-11-03 00:57:38

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

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

You might want to consider whether you really want to depend on those context objects directly (they tend to make things that depend on them hard to test). That said, you are on the right track:

For<RequestContext>().Use(ctx => HttpContext.Current.Request.RequestContext);
For<RouteCollection>().Use(ctx => RouteTable.Routes);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文