Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 确定Azure Web或工作人员角色?(备选:确定是否在IIS中运行?)_C#_Azure_Environment_Azure Worker Roles_Azure Web Roles - Fatal编程技术网

C# 确定Azure Web或工作人员角色?(备选:确定是否在IIS中运行?)

C# 确定Azure Web或工作人员角色?(备选:确定是否在IIS中运行?),c#,azure,environment,azure-worker-roles,azure-web-roles,C#,Azure,Environment,Azure Worker Roles,Azure Web Roles,我在我的工作者角色和Web角色启动代码中都使用了一些代码。在Worker中,从Run()方法调用代码;在Web角色中,它在Application\u Start中调用 我想根据我是工作人员还是web角色,对其行为进行轻微更改。有没有办法检测到这一点?如果不是,我是否可以检测我是否在IIS下运行 请注意,检查HttpContext将不起作用,因为我正在应用程序\u Start中运行 这个问题反复出现。我能想到的是,使用服务器管理器方法。如果对ServerManager的调用失败,或者根本没有站点,

我在我的工作者角色和Web角色启动代码中都使用了一些代码。在Worker中,从
Run()
方法调用代码;在Web角色中,它在
Application\u Start
中调用

我想根据我是工作人员还是web角色,对其行为进行轻微更改。有没有办法检测到这一点?如果不是,我是否可以检测我是否在IIS下运行

请注意,检查
HttpContext
将不起作用,因为我正在
应用程序\u Start
中运行

这个问题反复出现。我能想到的是,使用服务器管理器方法。如果对ServerManager的调用失败,或者根本没有站点,则您将担任辅助角色。否则-web角色。我认为这是最可靠的检查方法


不要忘记IIS仍然存在于工作角色中(您可以RDP到任何工作角色,并将看到IIS服务器角色存在)。还没开始呢!因此,“默认网站”可能仍然存在(从未选中过该网站!)。

如果“WaWorkerHost”进程存在,则为工作者角色,否则为Web角色。您也可以改为选中“WAISHOST”

    bool isWorkerRole = false;
    foreach (Process proc in Process.GetProcessesByName("WaWorkerHost"))
    {
        isWorkerRole = true;
    }           

有没有理由不在web和工作环境中都使用Run()方法?web角色只是IIS打开时的工作角色;fabric仍将调用web角色上的所有RoleEntryPoint(Azure角色生命周期)方法。@ChrisJ.T.Auld Run()不在完整IIS web角色的同一AppDomain中运行。可能重复“一遍又一遍”,但您链接到一个没有接受答案的问题。。只要冷静下来,帮助提问者解决他的问题,就不必为此发火