2016-12-09 2 views
1

Я новичок в лазурной. У меня есть приложение ASP.NET MVC, которое размещено на сервере azure (приложение) с двумя экземплярами, мое приложение использует локальный кеш. Иногда мне нужно очистить этот кеш. Но проблема в том, что когда я очищаю кеш, я делаю это только для одного конкретного экземпляра, а другой все еще хранит старый кеш. Есть ли способ получить доступ ко всем экземплярам в службе приложений?Как получить доступ к экземплярам службы azure app напрямую

Ofcourse Я могу запустить некоторую фоновую задачу на каждом экземпляре, чтобы достичь этого, но это не кажется удобным. Я хотел бы иметь возможность получить все IP-адреса и порты всех экземпляров в службе приложений, а затем создать веб-приложение, которое ударит по всем экземплярам и очистит кеш.

ответ

1

Возможно использование ARRAffinity cookie в запросе. Пример кода:

private static async Task<HttpResponseMessage> GetFromInstance(Uri url, string instanceId) 
    { 
     var cookieContainer = new CookieContainer(); 
     using (var handler = new HttpClientHandler() { CookieContainer = cookieContainer }) 
     { 
      using (var httpClient = new HttpClient(handler)) 
      { 
       cookieContainer.Add(url, new Cookie("ARRAffinity", instanceId)); 
       return await httpClient.GetAsync(url); 
      } 
     } 
    } 

Один из вариантов, чтобы получить список instanses идентификаторов осуществляется через Azure Проводник ресурсов https://resources.azure.com

4

Нет прямого способа подключения к конкретному экземпляру веб-приложения. Вам нужно либо создать систему сообщений, чтобы запускать все ваши экземпляры приложений, чтобы очистить их локальные кеши, либо перейти в общий кэш (что больше соответствует хостингу в App Services).

Смежные вопросы