如何在本地Azure Emulator上重新启动实例?

如何在本地Azure Emulator上重新启动实例?,azure,azure-worker-roles,Azure,Azure Worker Roles,我正在开发工作角色故障转移解决方案,我需要能够通过关闭或重新启动实例以及创建新实例来测试和调试故障转移机制 如何在本地Azure Emulator上重新启动或关闭特定实例?我正在使用1.7SDK 谢谢,您无法关闭特定实例;您只能缩小正在运行的实例的总数 如果要重新启动正在运行的实例,可以调用: roleenEnvironment.RequestRecycle(); 我不同意大卫的回答。您可以做一些事情来关闭实例或创建新实例 关闭/终止实例 在emulator中运行应用程序时,它会为每个实例启动1

我正在开发工作角色故障转移解决方案,我需要能够通过关闭或重新启动实例以及创建新实例来测试和调试故障转移机制

如何在本地Azure Emulator上重新启动或关闭特定实例?我正在使用1.7SDK


谢谢,

您无法关闭特定实例;您只能缩小正在运行的实例的总数

如果要重新启动正在运行的实例,可以调用:

roleenEnvironment.RequestRecycle();

我不同意大卫的回答。您可以做一些事情来关闭实例或创建新实例

关闭/终止实例 在emulator中运行应用程序时,它会为每个实例启动1个Web角色(WaIISHost.exe)/Worker角色(WaWorkerHost.exe)进程:

当您终止其中一个进程时,就好像终止了一个实例。切换回emulator后,您将看到您杀死的特定实例的图标改变了颜色,日志将显示实例的状态为未知/已销毁:

连接调试器后,您将看到这种情况发生,实例将永远不会重新启动,从而允许您测试突然失去一个或多个实例的场景。如果未连接调试器,这一切都会发生得非常快,实例将立即重新启动(在VisualStudio中,您可以选择在不进行调试的情况下启动)

增加或减少实例数 使用csrun.exe(通常位于C:\Program Files\Microsoft SDK\Windows Azure\Emulator中),您可以在Emulator中更新服务的配置,包括实例数。假设我想在我目前拥有的4个实例的基础上增加6个实例

我打开位于Azure项目我的调试文件夹中的ServiceConfiguration.cscfg文件(..\Some\Path\MultipleInstancesDemo\MultipleInstancesDemo\bin\Debug),并将实例数更改为10:

<ServiceConfiguration serviceName="MultipleInstancesDemo" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceConfiguration" osFamily="1" osVersion="*" schemaVersion="2012-05.1.7">
  <Role name="MyWebRole">
    <Instances count="10" />
    <ConfigurationSettings>
      <Setting name="Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString" value="UseDevelopmentStorage=true" />
    </ConfigurationSettings>
  </Role>
</ServiceConfiguration>

然后,可以通过向csrun.exe提供部署ID和配置文件的路径,将其推送到emulator。您将在emulator中找到部署ID。在上一个屏幕截图中,您将看到部署17(20),这意味着部署ID是20。以下是调用csrun.exe的方式: csrun/更新:20;“.\Some\Path\MultipleInstancesDemo\MultipleInstancesDemo\bin\Debug\SeviceConfiguration.cscfg”

几秒钟后,您将在emulator中看到新实例:


注意!:在这里,这似乎只有在您启动项目而不进行调试时才有效。

回答得很好。下一个版本应该允许轻松右键单击实例并执行重启或关闭等操作。这样我们就可以测试意外事件,如硬件故障或更新修补。