Я создал контроллер в своем приложении ASP.NET MVC для обработки разогрева / инициализации приложения (т. Е. Начальной загрузки клиентских прокси-серверов веб-службы и других действий, которые первоначально могут занимать значительную часть времени).Чтобы вызвать контроллер WarmUp, я использую модуль разогрева IIS 7 / 7.5 для отправки запроса при каждом запуске пула приложений.
Я не хочу, чтобы все пользователи могли выполнять действия контроллера WarmUpпоэтому я украсил контроллер атрибутом [Authorize]
.Я даже создал в своем домене группу, в которой содержатся пользователи, которым разрешено выполнять разминочные действия, и добавил эту группу в качестве роли для атрибута authorize (т. Е. [Authorize(Roles = @"MyDomain\AppWarmUp")]
).
Если яВручную вызовите контроллер WarmUp с помощью веб-браузера и предоставьте правильные учетные данные, все работает как положено.Однако при использовании модуля прогрева IIS, даже когда я предоставляю надлежащие учетные данные, в журнале событий приложений появляются предупреждения, указывающие, что аутентификация не удалась.
Если я указываю только тип и имя пользователя дляПользовательский контекст модуля прогрева, я получаю ProviderException
с сообщением
Метод поддерживается только в том случае, если параметр имени пользователя совпадает с именем пользователя в текущей идентификации Windows.
Если я укажу имя пользователя и пароль / токен, я получу ArgumentException
со следующим сообщением:
Недопустимый токен для олицетворения - его нельзя дублировать.
Если я удаляю атрибут [Authorize]
из моего контроллера, то запрос модуля прогрева проходит без каких-либо исключений.Однако я бы хотел избежать случая, когда все пользователи могут получить доступ к контроллеру WarmUp, если это возможно.Может ли это быть ошибкой в модуле прогрева или я что-то упустил?
Стоит также отметить, что я также пробовал использовать функцию автозапуска приложений ASP.NET 4.0, но это не так.кажется, имеет тот же эффект, что и фактический запрос к приложению.Есть ли другие альтернативы для рассмотрения?