Служба приложений Azure. Можно ли включить ARR Affinity для определенных запросов?

У меня развернуты веб-приложения без сохранения состояния в службе приложений Azure, и в настройках приложения отключена привязка ARR. Можно ли оставить это отключенным, но включить его для конкретных запросов?

Я натолкнулся на сообщение Benjaminperkins от 2016 года, в котором указывалось, что можно отключить это для отдельных запросов, добавив заголовок "Arr-Disable-Session-Affinity", но я хотел бы изменить это, "Arr-Enable-Session-". Affinity".

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

Вот пример того, что я хотел бы сделать:

ServiceClientCredentials serviceCreds = 
   await ApplicationTokenProvider.LoginSilentAsync(this.config.ADTenant, this.config.ADApplicationId, this.config.ADKey);

ResourceManagementClient resourceClient = new ResourceManagementClient(serviceCreds);
resourceClient.SubscriptionId = this.config.SubscriptionId;
WebSiteManagementClient webClient = new WebSiteManagementClient(serviceCreds);
webClient.SubscriptionId = this.config.SubscriptionId;

string urlPath = "custompath/";
SiteInner site = 
   webClient.WebApps.List().Where(a => a.Id == "webapp id").FirstOrDefault();
IList<SiteInstanceInner> instances = 
   webClient.WebApps.ListInstanceIdentifiers(site.ResourceGroup, site.Name).ToList();

SiteInstanceInner instance = instances.FirstOrDefault();

// these are initialized as a singleton, inline here as an example
HttpClientHandler handler = new HttpClientHandler() { UseCookies = false };
HttpClient httpClient = new HttpClient(handler, disposeHandler: false);

httpClient.Timeout = new TimeSpan(0, 0, 30);
webClient = await GetWebsiteClientIfNull(webClient);

Uri url = new Uri($"http://{site.DefaultHostName}/{urlPath}");

HttpRequestMessage message = new HttpRequestMessage(HttpMethod.Get, url);
message.Headers.Add("Arr-Enable-Session-Affinity", bool.TrueString);
message.Headers.Add("Cookie", $"ARRAffinity={WebUtility.UrlEncode(instance.Name)};");

HttpResponseMessage response = await webClient.HttpClient.SendAsync(message);

Есть ли способ сделать это, когда ARR Affinity отключен в службе приложений?

0 ответов

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