软关闭云角色,以便忽略新的操作请求?

时间:2015-03-18 18:42:40

标签: c# asp.net iis azure

我想知道是否可以对云服务进行“软关机”或“软重启”。换句话说,服务器将拒绝新的传入http请求(通过ASP.net控制器操作进入),但会完成所有正在进行的现有请求。发生这种情况后,服务器将正常关闭或停止。

服务器版本

Azure OS Family 3发布版 Windows Server 2012
.NET 4.5
IIS 8.0
asp.net 4.0

使用场景

我需要确保响应当前正在进行的远程http请求的任何操作在服务器开始关闭或由于暂停生产交换而无法响应之前完成。

我做过一些研究,但不知道这是否可行。

一个hacky解决方法可能是使用CloudConfigurationManager变量来启动在http上的任何传入操作上应该返回错误503代码,但是我必须坐下来等待一段时间而无需验证条件。那时我可以停止服务或执行交换。

1 个答案:

答案 0 :(得分:4)

有关如何在角色停止时消耗HTTP请求的信息,请参阅http://azure.microsoft.com/blog/2013/01/14/the-right-way-to-handle-azure-onstop-events/(附上下面的图片,我不知道为什么源使用图像而不是文本......):

http://azure.microsoft.com/blog/2013/01/14/the-right-way-to-handle-azure-onstop-events/

另请注意,执行VIP交换不会影响角色实例本身或任何与实例的TCP连接,因此不会因为您进行VIP交换而导致无响应。在VIP交换之后开始关闭分段部署时,上面的代码将帮助在实际关闭之前排除请求。