ステートレス Web アプリケーションを Azure App Service にデプロイしており、アプリケーション設定で ARR アフィニティを無効にしています。これを無効のままにして、特定のリクエストに対して有効にすることはできますか?
「Arr-Disable-Session-Affinity」ヘッダーを追加することで、個々のリクエストに対してこれを無効にできることを示す2016 年の benjaminperkins による投稿に出くわしましたが、この逆の「Arr-Enable-Session-アフィニティ」。
リモート操作に続いて、個々のインスタンスにリクエストを送信して、メモリ内キャッシュをウォームアップできるようにしたいと考えています。ARRAffinity が有効になっているときに App Server Web アプリ インスタンスへの URL 要求を作成する方法は理解していますが、これをグローバルに有効にしたくないのでうまくいきません。
これが私がやりたいことの例です:
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);
ARRAffinity が App Service で無効になっている場合にこれを行う方法はありますか?