繁体   English   中英

确定Azure Web或辅助角色? (替代:确定是否在IIS中运行?)

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM