RoleEnvironment.Changing事件不会在WorkerRole中触发

时间:2012-12-19 16:31:14

标签: azure azure-worker-roles

所以,我有一个带有3个WebRoles和1个WorkerRole的Azure项目。在每个项目中,我都订阅了RoleEnvironment.Changing和RoleEnvironment.Changed事件。在WebRole中一切都很好,但在WorkerRole中这些事件不想触发。

Мoreover当我更改某些WebRole的设置时, WorkerRole也会每次都回收

WorkerRole在内部运行另一个x86进程,在启动时运行脚本

使用Azure SDK 1.7

<WorkerRole name="MyService" vmsize="Medium" enableNativeCodeExecution="true">
    <Startup>
      <Task commandLine="startup.cmd" taskType="simple" executionContext="elevated" />
    </Startup>
    <Runtime executionContext="elevated" />
    <Imports>
      <Import moduleName="Diagnostics" />
      <Import moduleName="RemoteAccess" />
    </Imports>
    <Endpoints>
      <InputEndpoint name="Endpoint1" protocol="http" port="8081" />
      <InputEndpoint name="TCPEndpoint" protocol="tcp" port="10101" localPort="10100" />
      <InternalEndpoint name="InternalEndpoint" protocol="http" />
    </Endpoints>
    <ConfigurationSettings>
      <Setting name="StorageConnectionString" />
      <Setting name="TransactionLogsBlobContainer" />
    </ConfigurationSettings>
    <LocalResources>
      <LocalStorage name="DiagnosticStore" cleanOnRoleRecycle="false" sizeInMB="8192" />
    </LocalResources>
  </WorkerRole>

有人知道会发生什么事吗?

由于

2 个答案:

答案 0 :(得分:0)

我遇到了类似的问题,发现将启动任务的taskType提升更改为后台解决了我的问题。我建议从那里开始。

<Startup>
  <Task commandLine="startup.cmd" executionContext="elevated" taskType="background"></Task>
</Startup>

答案 1 :(得分:0)

对于辅助角色,您必须定义内部端点(即使您实际上并未使用它),以获取某些事件。

IE,将此添加到您的CSDef:     

此处有更多详情:http://blogs.msdn.com/b/windowsazure/archive/2011/01/04/responding-to-role-topology-changes.aspx