我们将多个站点部署到单个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>
如果我理解正确,您可以访问主站点,例如:
public class WebRole : RoleEntryPoint
{
public override void Run()
{
while (true)
{
// Reconfigure log4net every 10 minutes
log4net.Config.XmlConfigurator.Configure();
Thread.Sleep(60000);
}
}
}
但是如何为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()方法。
答案 0 :(得分:0)
由于您要将站点配置为在不同的应用程序池中运行,因此您需要在单个应用程序的global.asax.cs文件中为每个应用程序检测log4net全局静态变量