我是azure的新手。我有一个Asp.Net MVC应用程序托管在azure(应用程序服务)上有两个实例,我的应用程序使用本地缓存。有时候我需要清除这个缓存。但问题是,当我清除缓存时,我实际上只为一个特定实例执行此操作,而另一个仍然保留旧缓存。有没有办法获得应用服务上所有实例的访问权限?
当然,我可以在每个实例上运行一些后台任务来实现这一点,但这似乎并不方便。我希望能够在应用服务上获取所有实例的所有IP和端口,然后创建可以访问所有实例并清除缓存的webjob。
答案 0 :(得分:4)
没有直接的方法可以连接到特定的Web应用程序实例。您需要构建某种类型的消息传递系统来触发所有应用程序实例以清除其本地缓存,或转移到共享缓存(这更符合App Services中的托管)。
答案 1 :(得分:2)
可以在请求中使用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);
}
}
}
获取instanses id列表的一个选项是通过Azure Resource Explorer https://resources.azure.com