2016-12-09 21 views
1

私はアズールを初めて利用しています。私は2つのインスタンスとazure(アプリケーションサービス)でホストされているAsp.Net MVCアプリケーションを持って、私のアプリはローカルキャッシュを使用します。時々私はこのキャッシュをクリアする必要があります。しかし問題は、私がキャッシュをクリアすると、実際には特定のインスタンスに対してのみこれを行い、他のものは古いキャッシュを保持しているということです。アプリサービス上のすべてのインスタンスにアクセスする方法はありますか?アズールアプリサービスインスタンスに直接アクセスする方法

私は各インスタンスでいくつかのバックグラウンドタスクを実行してこれを実現できますが、これは便利ではありません。私は、すべてのIPとアプリケーションサービス上のすべてのインスタンスのポートを取得する能力を持っているし、すべてのインスタンスをヒットし、キャッシュをクリアするwebjobを作成したいと思います。

答えて

1

リクエストに応じてARRAffinityクッキーを使用して行うことができます。 コードサンプル:

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 IDのリストを取得するための一つのオプションは、Azureのリソースエクスプローラhttps://resources.azure.com

経由で
4

Webアプリケーションの特定のインスタンスに直接接続する方法はありません。すべてのアプリケーションインスタンスがローカルキャッシュをクリアするようにするには、ある種のメッセージングシステムを構築するか、(App Servicesのホスティングと同じように)共有キャッシュに移行する必要があります。

関連する問題