所以,我有一个带有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>
有人知道会发生什么事吗?
由于
答案 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