Как включить пользовательский модуль http для конкретного контроллера в ASP.NET MVC 3 - PullRequest
2 голосов
/ 12 января 2012

У меня есть сторонний модуль аутентификации HTTP. Я хотел бы, чтобы этот модуль был настроен на определенный метод действия контроллера. Это возможно?

Я знаю, что мы можем настроить на уровне папок, имея соответствующий файл web.config на уровне папок, но я ищу конкретный метод действий конкретного контроллера.

Ответы [ 3 ]

4 голосов
/ 12 января 2012

Вы не можете включить модуль Http для определенного контроллера, но вы можете включить его для определенного пути запроса в web.config.Это эффективно делает работу IMO.Следующий фрагмент web.config включает «ThirdParty.HttpModule» только для запроса, соответствующего пути «yourController».Это также должно работать с MVC, WebForms и общими обработчиками.

<location path="yourController" inheritInChildApplications="false">
  <system.web>
    <httpModules>
      <add name="yourModule" type="ThirdParty.HttpModule"/>
    </httpModules>
  </system.web>
</location>

Часть inheritInChildApplications важна, если у вас есть какие-либо другие приложения в подкаталогах этого приложения, потому что дочерние приложения наследуют эту конфигурациюпо умолчанию, и вы можете не захотеть, чтобы этот модуль работал в дочерних приложениях.

Подробнее о MSDN .

0 голосов
/ 12 января 2012

Вы должны использовать ActionFilters для этого.Если вы действительно хотите использовать HttpModule, модуль должен проверить, должна ли он выполнять свою логику на основе URLHttpModule ничего не знает о ваших контроллерах и наоборот.

0 голосов
/ 12 января 2012

Я полагаю, вы ищете фильтры действий.В Интернете доступно множество примеров, демонстрирующих, как их настроить.

http://msdn.microsoft.com/en-us/library/dd381609%28v=VS.98%29.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...