[英]Determine Azure Web or Worker role? (Alternate: Determine if running in IIS?)
我在工作角色和Web角色启动代码中都使用了一些代码。 在Worker中,从Run()
方法中调用代码。 在Web角色中,它在Application_Start
被调用。
我想根据自己是工作人员还是网络角色对其行为进行细微更改。 有没有办法检测到这一点? 如果不是,是否可以检测是否在IIS下运行?
请注意,由于我在Application_Start
运行,因此检查HttpContext
无效。
好,
这个问题已经被反复问过 。 我能想到的是使用该方法列出当前角色实例中的所有站点 (ServerManager方法)。 如果对ServerManager的调用失败,或者根本没有站点,则您处于辅助角色。 否则-网络角色。 我认为这是最可靠的检查方法。
不要忘记IIS在工作角色中仍然存在(您可以将RDP转换为任何工作角色,并且会看到存在IIS服务器角色)。 只是还没有开始! 因此,“默认网站”可能仍然存在(从未选中该网站!)。
如果“ WaWorkerHost”进程存在,则为工作角色,否则为Web角色。 您还可以选中“ WaIISHost” 。
bool isWorkerRole = false;
foreach (Process proc in Process.GetProcessesByName("WaWorkerHost"))
{
isWorkerRole = true;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.