ASP.NET MVC Injecting Http / Запрос / Контроллер контекст - PullRequest
4 голосов
/ 26 марта 2011

Есть ли рекомендуемый подход для внедрения контекста Http / Request / Controller в приложение ASP.NET MVC?

Ранее я делал это только с помощью HttpContext следующим образом (я использую StructureMap):

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

Однако в некоторых случаях мне также необходимо получить доступ к контексту запроса.Вместо того, чтобы создавать это вручную, было бы неплохо сделать это.Хорошим примером будет внедрение UrlHelper (требуется RequestContext и RouteCollection).

Спасибо

Бен

1 Ответ

4 голосов
/ 28 марта 2011

Возможно, вы захотите решить, действительно ли вы хотите напрямую зависеть от этих объектов контекста (они, как правило, затрудняют тестирование вещей, которые зависят от них). Тем не менее, вы на правильном пути:

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