Как получить данные из IHttpModule в ASP.NET MVC RequestContext? - PullRequest
2 голосов
/ 17 января 2009

У меня есть собственный IHttpModule, который выполняет аутентификацию (для Facebook, Myspace и т. Д.). Это вызывает событие, которое может быть обработано в экземпляре HttpApplication с подробной информацией о пользователе. Это очень похоже на событие OnAuthenticate, которое вызывает FormsAuthenticationModule.

Где из класса HttpApplication я должен разместить эту информацию, которую я получаю, чтобы она была доступна конвейеру ASP.NET MVC? Я использовал его в словаре Context.Items. Но, похоже, с (гораздо более дружественным) HttpContextBase я хочу поместить его туда, чтобы его было легко смоделировать / ввести, и я не использую HttpContext.Current в моем контроллере.

Итак, в основном, как мне лучше всего получить данные из IHttpModule в контексте MVC? Лучшее, что я могу придумать при быстром взгляде, - это создать собственный IControllerFactory для извлечения данных из HttpContext и добавления его в RequestContext. Я ответил на свой вопрос? Есть ли менее навязчивый способ (например, событие, с которым я могу справиться)?

1 Ответ

2 голосов
/ 20 января 2009

Я предполагаю, что ваш модуль работает до маршрутизации. Если это так, то слишком рано добавлять его непосредственно в RequestContext.

Я бы попробовал добавить его в HttpContext.Current.Items. Маршрутизация обернет этот HttpContext с помощью HttpContextBase. После этого вы сможете получить к нему доступ из любого места через RequestContext.HttpContext.Items.

...