Azure 如何从RoleEntryPoint访问WebRole上运行的所有站点

Azure 如何从RoleEntryPoint访问WebRole上运行的所有站点,azure,log4net,azure-web-roles,log4net-configuration,Azure,Log4net,Azure Web Roles,Log4net Configuration,我们将多个站点部署到单个WebRole <Sites> <Site name="Web"> <Bindings> <Binding name="EndpointA" endpointName="Internal" /> </Bindings> </Site> <Site name="Web2" physicalDirectory="Web2"> <Bindin

我们将多个站点部署到单个WebRole

<Sites>
  <Site name="Web">
    <Bindings>
      <Binding name="EndpointA" endpointName="Internal" />
    </Bindings>
  </Site>
  <Site name="Web2" physicalDirectory="Web2">
    <Bindings>
      <Binding name="EndpointB" endpointName="EndpointB" />
    </Bindings>
  </Site>
</Sites>
但是如何为运行在WebRole上的每个站点执行log4net.Config.XmlConfigurator.Configure()

顺便说一句

log4net.config文件存储在Azure blob存储上

编辑:

log4net.Config.XmlConfigurator.Configure()将根据App.Config或Web.Config读取正确的log4net blob。具体来说:ConfigureFromBlob()已添加到log4net实现中

如果应用程序是在本地安装的,ConfigureFromFile()将自动监视log4net.config文件的更改,并在需要时重新配置。ConfigureFromUri()和ConfigureFromBlob()无法执行此操作,因此需要手动重新配置log4net.config更改


对于Windows Azure,我想最好的方法是Run()方法。

因为您将站点配置为在不同的应用程序池中运行,所以需要为每个应用程序插入log4net全局静态变量,在单个应用程序的global.asax.cs文件中

是否需要为每个站点提供不同的log4net配置?是的,我们需要为每个站点提供单独的log4net配置。但是,即使我们在Azure blob存储上存储了一个log4net配置,我们仍然会遇到每个站点重新配置的问题,对吗?我不想更改应用程序本身(请参阅原始帖子中的“编辑”部分)。但是你是说我不能从RoleEntryPoint访问单个站点吗?
public class WebRole : RoleEntryPoint 
{
    public override void Run()
    {
        while (true)
        {
            // Reconfigure log4net every 10 minutes
            log4net.Config.XmlConfigurator.Configure();
            Thread.Sleep(60000);
        }
    }
}