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>

Обратитесь сюда

Другие вопросы по тегам