如何直接访问 Azure 应用服务实例

How to get access to azure app service instances directly

我是天蓝色的新手。我有一个 Asp.Net MVC 应用程序托管在 azure(应用程序服务)上,有两个实例,我的应用程序使用本地缓存。有时我需要清除这个缓存。但问题是,当我清除缓存时,我实际上只对一个特定实例执行此操作,而另一个仍然保留旧缓存。有什么方法可以访问应用程序服务上的所有实例?

当然我可以 运行 在每个实例上执行一些后台任务来实现此目的,但这似乎并不方便。我希望能够获取应用程序服务上所有实例的所有 IP 和端口,然后创建将命中所有实例并清除缓存的 webjob。

没有直接的方法连接到网络应用程序的特定实例。您需要构建某种类型的消息传递系统来触发所有应用程序实例以清除其本地缓存,或者转移到共享缓存(这更符合应用服务中的托管)。

可以通过在请求中使用 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);
            }
        }
    }

获取实例 ID 列表的一个选项是通过 Azure 资源浏览器 https://resources.azure.com