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

Vol*_*kyi 5 caching load-balancing azure azure-web-app-service

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

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

Vol*_*kyi 6

可以通过在请求中使用 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);
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

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


Dav*_*gon 5

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