Попробуйте добавить в свой блок <system.webServer> <modules>
следующее:
<configuration>
<system.webServer>
<modules>
<remove name="FormsAuthentication" />
<add name="FormsAuthentication" type="System.Web.Security.FormsAuthenticationModule" />
<remove name="UrlAuthorization" />
<add name="UrlAuthorization" type="System.Web.Security.UrlAuthorizationModule" />
<remove name="DefaultAuthentication" />
<add name="DefaultAuthentication" type="System.Web.Security.DefaultAuthenticationModule" />
<remove name="RoleManager" />
<add name="RoleManager" type="System.Web.Security.RoleManagerModule" />
</modules>
</system.webServer>
</configuration>
Бит RoleManager
является ключевым, и он не включен ни в один из онлайн-примеров, которые я смог найти. Без этого членство пользователя в роли не инициализируется для статического содержимого, поэтому авторизация на основе ролей всегда будет неудачной.
(Отказ от ответственности: я сам собрал это воедино на основании моего ограниченного понимания IIS, но, похоже, это работает.)
Редактировать (в ответ на ваш комментарий): Извините, я мало знаю о том, как RoleManager зависит от других модулей. Вы можете просмотреть конфигурацию IIS по умолчанию, посмотрев c:\Windows\System32\inetsrv\config\applicationHost.config
(по крайней мере, это на моем компьютере с Windows Vista), чтобы увидеть порядок загрузки модулей (обратите внимание на использование managedHandler по умолчанию для ограничьте RoleManager нестатическим содержимым), а MSDN охватывает RoleManagerModule вместе с остальными модулями в пространстве имен System.Web.Security , поэтому вы, вероятно, сможете найти то, что вам нужно .