我的应用程序中有一些依赖于部署槽的设置。我理解这样的设计决策所带来的惩罚和影响,但这个决定是最终的,并且适用于我们的案例。
我想知道的是当您更改托管服务的部署槽(如果有的话)时,会触发什么事件?RoleEnvironmentTopologyChange看起来是正确的,但是在描述中,它说当实例数量发生变化时触发,所以这不是我想要的。
我需要它的原因是使持有该插槽的缓存无效-这将进一步传递给解析器,该解析器获取特定于部署插槽的数据。
在VIP交换期间没有触发事件。如果您想在交换时更改某些内容,我建议您在交换之前进行配置设置并更改。
您可以通过检查从网关传递到WCF或web服务器的每个请求的主机头来检测VIP交换。您还可以通过检查主机是否是GUID来检测当前插槽。
参见下面如何在调用之间持久化变量如何编写一个WCF服务与内存中的持久存储?
var host = WebOperationContext.Current.IncomingRequest.Headers["Host"] ?? "";
if (host != currentHost)
{
// do something
currentHost = host;
}