Azure 如何从RoleEntryPoint访问WebRole上运行的所有站点
我们将多个站点部署到单个WebRoleAzure 如何从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
<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);
}
}
}