自动伸缩删除webrole时如何取消订阅?
How to unsubscribe from subscription when webrole is deleting by autoscaling?
我的应用使用 Ninject。
public class Global : NinjectHttpApplication
在应用程序启动时,我调用:
protected override void OnApplicationStarted()
...
if (RoleEnvironment.IsAvailable)
{
RoleEnvironment.Stopping += (sender, args) =>
{
messagesListener.Stop(true);
Logger.LogInfo("Website is stopping. InstanceNo = " + instanceNo);
};
}
但由于某种原因,此事件 Stopping 未被调用。请帮我。我听说我可能需要使用 RoleEntryPoint class 的 OnStop 事件,我可以在我的 class 中继承它,但我不确定该怎么做。我读了这篇文章:What's the difference between the webrole onStart() event and Application_Start() global.asax event?
您的 Web 项目中应该有一个名为 WebRole.cs 的 class。此 class 默认添加到所有基于云服务的基于 Web 的 Azure 项目。
如果您在项目中没有看到 class,您可以简单地添加它。在其中,您可以为停止事件配置事件处理程序
public class WebRole : RoleEntryPoint
{
public override bool OnStart()
{
// For information on handling configuration changes
// see the MSDN topic at http://go.microsoft.com/fwlink/?LinkId=166357.
RoleEnvironment.Stopping += (sender, args) =>
{
messagesListener.Stop(true);
Logger.LogInfo("Website is stopping. InstanceNo = " + instanceNo);
};
return base.OnStart();
}
public override void OnStop()
{
// you can also put stuff here to test
base.OnStop();
}
}
我的应用使用 Ninject。
public class Global : NinjectHttpApplication
在应用程序启动时,我调用:
protected override void OnApplicationStarted()
...
if (RoleEnvironment.IsAvailable)
{
RoleEnvironment.Stopping += (sender, args) =>
{
messagesListener.Stop(true);
Logger.LogInfo("Website is stopping. InstanceNo = " + instanceNo);
};
}
但由于某种原因,此事件 Stopping 未被调用。请帮我。我听说我可能需要使用 RoleEntryPoint class 的 OnStop 事件,我可以在我的 class 中继承它,但我不确定该怎么做。我读了这篇文章:What's the difference between the webrole onStart() event and Application_Start() global.asax event?
您的 Web 项目中应该有一个名为 WebRole.cs 的 class。此 class 默认添加到所有基于云服务的基于 Web 的 Azure 项目。
如果您在项目中没有看到 class,您可以简单地添加它。在其中,您可以为停止事件配置事件处理程序
public class WebRole : RoleEntryPoint
{
public override bool OnStart()
{
// For information on handling configuration changes
// see the MSDN topic at http://go.microsoft.com/fwlink/?LinkId=166357.
RoleEnvironment.Stopping += (sender, args) =>
{
messagesListener.Stop(true);
Logger.LogInfo("Website is stopping. InstanceNo = " + instanceNo);
};
return base.OnStart();
}
public override void OnStop()
{
// you can also put stuff here to test
base.OnStop();
}
}