Azure разминка на веб-API не работает
У меня есть веб-сайт с некоторыми веб-сервисами, написанными с использованием web api 2 и.net 4.6. Я хочу, чтобы приложение инициализировалось при перезапуске сайта или при запуске нового экземпляра (в службе приложений Azure).
У меня есть этот код в webconfig:
<configuration>
,,,,
<system.webServer>
...
<applicationInitialization doAppInitAfterRestart="true">
<add initializationPage="/" />
<add initializationPage="/api-v2/warmup/get" />
</applicationInitialization>
У меня есть этот контроллер:
public class WarmupController : ApiController
{
[HttpGet]
[RequireRole(UserRole.None)]
[IgnoreTypeScriptGeneration]
public IHttpActionResult Get()
{
Log.Information($"Warming up started. {Environment.MachineName}");
// my warm up code
Log.Information($"Warming up succeeded. {Environment.MachineName}");
return Ok();
}
Я не вижу никаких журналов. Ни когда я перезагружаю сайт, ни когда я делаю масштабирование. Я попытался вызвать мой API с помощью почтальона без каких-либо заголовков (просто получить http://xxx//api-v2/warmup/get, и он работал нормально, а также записал в мои журналы.
Я уже читал эту ветку: не удается разогреть страницы с помощью applicationInitialization в webconfig
Нет никаких ограничений Ip ни на Azure, ни на webconfig
- В webconfig нет переписывания URL (например, для https или для www.)
- Внешняя система не задействована (например, CMS), поэтому мне не нужно отправлять имя хоста, но я также пытался отправить это, но это не сработало.
2 ответа
Так что мне наконец удалось заставить это работать!
Проблема была в моем коде, а не в настройках.
В стартовом коде была часть, которая добавляла проверку к запросам, и, если она была от localhost, она останавливала процессы.
Так что урок усвоен трудным путем!:)
Проверьте webconfig на переадресацию и переписывание Проверьте код на вещи, которые делают то же самое
Вам не хватает hostName в вашем initializationPage
модуль, где hostname будет вашим реальным именем сайта, т.е. xx.azurewebsites.net
<system.webServer>
<applicationInitialization
doAppInitAfterRestart="true"
skipManagedModules="true">
<add initializationPage="/default.aspx" hostName="myhost"/>
</applicationInitialization>