Данное руководство устарело. Актуальное руководство: Руководство по ASP.NET Core
В ASP.NET MVC модули представляют специальные классы, реализующие интерфейс System.Web.IHttpModule. Их инициализация происходит после создания объекта приложения. С помощью модулей мы можем управлять обработкой запроса в приложении.
Фреймворк ASP.NET MVC уже использует ряд встроенных модулей для различных задач:
AnonymousIdentification: представлен классом System.Web.Security.AnonymousIdentificationModule
. Отвечает за
идентификацию запросов даже в тех случаях, когда пользователь не аутентифицирован - то есть для анонимных запросов
DefaultAuthentication: представлен классом System.Web.Security.DefaultAuthenticationModule
. Отвечает за
установку свойства User у объекта HttpContext
FileAuthorization: представлен классом System.Web.Security.FileAuthorizationModule
, который используется при аутентификации Windows
FormsAuthentication: представлен классом System.Web.Security.FormsAuthenticationModule
. Данный модуль используется при
аутентификации форм и устанавливает значение свойства HttpContext.User
, с помощью которого мы в приложении можем получить аутентифицированного пользователя
OutputCache: представлен классом System.Web.Caching.OutputCacheModule
. Отвечает за
кэширование ответа клиенту
PageInspectorHttpModule: этот модуль поддерживает функциональность Page Inspector, которая имеется в Visual Studio и с помощью которой осуществляется отладка HTML и CSS
Profile: представляет класс System.Web.Profile.ProfileModule
, который связывает данные профиля пользователя с данными в запросе
RoleManager: представлен классом System.Web.Security.RoleManagerModule
, который управляет назначением ролей
ScriptModule-4.0: представлен классом System.Web.Handlers.ScriptModule
. Предназначен для поддержки Ajax-запросов
ServiceModel-4.0: представлен классом System.ServiceModel.Activation.ServiceHttpModule
. Этот модуль используется веб-службами ASP.NET
Session: реализован классом System.Web.SessionState.SessionStateModule
. Предназначен для связи данных сессии с запросами
UrlAuthorization: представлен классом System.Web.Security.UrlAuthorizationModule
, который обеспечивает авторизованный доступ к ресурсам
UrlMappingsModule: представлен классом System.Web.UrlMappingsModule
. Предназначен для поддержки функции URL Mappings,
которая в ASP.NET MVC не применяется
UrlRoutingModule-4.0: реализован классом System.Web.Routing.UrlRoutingModule
, который используется системой маршрутизации
WebPageHttpModule: данный модуль сопоставляет запросы с файлами представлений
WindowsAuthentication: представляет класс System.Web.Security.WindowsAuthenticationModule
. Отвечает за аутентификацию Windows
В принципе мы можем сами получить список используемых модулей в своем приложении. Для этого в контроллере получим все модули через свойство HttpContext.ApplicationInstance.Modules. Допустим, у нас следующий метод получает модули и передает их в представление:
public ActionResult Modules() { var modules = HttpContext.ApplicationInstance.Modules; string[] modArray = modules.AllKeys; return View(modArray); }
И в представлении осуществим простой вывод массива:
@model IEnumerable<string> <ul> @foreach(string s in Model) { <li>@s</li> } </ul>