Я хотел знать, почему потребуется повторно добавлять модули (с параметрами по умолчанию), которые добавляются по умолчанию для интегрированного конвейера, поэтому я покопался немного глубже.
Вам необходимо удалить и повторно добавить модули, поскольку по умолчанию модули не добавляются с параметрами по умолчанию. В них добавлено предварительное условие для обратной совместимости для запуска только для содержимого, обрабатываемого зарегистрированным обработчиком ASP.NET (например, .aspx pages).
По умолчанию выглядит так:
<add name="FormsAuthentication" type="System.Web.Security.FormsAuthenticationModule"
preCondition="managedHandler" />
После удаления модулей и их повторного добавления без каких-либо предварительных условий эти отдельные модули запускаются для каждого запроса (включая статический контент). Это более детально, чем включение runAllManagedModulesForAllRequests
.
Вы можете прочитать об этом в нескольких статьях, когда интегрированный конвейер был представлен в IIS 7:
Обратите внимание, что во второй статье опечатка или имя модуля (и ответ @ John) были изменены с FormsAuthenticationModule
на FormsAuthentication
в некоторый момент.
Набор рабочих модулей в IIS 7.5 - 8.5 для меня выглядит следующим образом:
<system.webServer>
<modules>
<!-- Re-add auth modules (in their original order) to run for all static and dynamic requests -->
<remove name="FormsAuthentication" />
<add name="FormsAuthentication" type="System.Web.Security.FormsAuthenticationModule" />
<remove name="DefaultAuthentication" />
<add name="DefaultAuthentication" type="System.Web.Security.DefaultAuthenticationModule" />
<remove name="RoleManager" />
<add name="RoleManager" type="System.Web.Security.RoleManagerModule" />
<remove name="UrlAuthorization" />
<add name="UrlAuthorization" type="System.Web.Security.UrlAuthorizationModule" />
</modules>
</system.webServer>