Global.asax事件在Application_Start之前按意外顺序激活Application_End

时间:2013-01-03 15:51:47

标签: asp.net events rest nlog

我最近添加了NLog(http://nlog.codeplex.com/)日志记录到Asp.Net ReSTful Web服务。

现在正在按预期正确运行日志记录,但结果是意外的。在Global.asax中触发的事件的顺序在日志中并不是有用的输出。

事件如下:

void Application_Start(object sender, EventArgs e)
{
    logger.Info("Application Started");
}

void Application_End(object sender, EventArgs e)
{
    //  Code that runs on application shutdown
    logger.Info("Application Ended");
}

void Application_Error(object sender, EventArgs e)
{
    // Code that runs when an unhandled error occurs
    logger.Error("Unhandled Application Error");
}

void Session_Start(object sender, EventArgs e)
{
    // Code that runs when a new session is started
    logger.Info("Session Started");
}

void Session_End(object sender, EventArgs e)
{
    // Code that runs when a session ends. 
    // Note: The Session_End event is raised only when the sessionstate mode
    // is set to InProc in the Web.config file. If session mode is set to StateServer 
    // or SQLServer, the event is not raised.
    logger.Info("Session Ended");
}

日志输出不是您所期望的。这是一个开始然后停止。

2013-01-03 14:54:25.2106|INFO|PoppyService.Global|Application Ended
2013-01-03 14:54:25.8166|INFO|PoppyService.Global|Application Started
2013-01-03 14:54:27.3610|INFO|PoppyService.Configuration|Configuration Registration
2013-01-03 14:54:29.9170|INFO|PoppyService.Global|Session Started
2013-01-03 14:54:36.7722|INFO|PoppyService.Global|Application Started
2013-01-03 14:54:36.9750|INFO|PoppyService.Configuration|Configuration Registration

事件是在异常的命令和错误的时间触发的。

P.S。忽略'配置注册'

我目前正在使用Visual Studio 2010启动服务,以及“属性”中的“服务器”设置 - > Web设置为“使用本地IIS Web服务器”而不是VSDS。

除了Session_Start之外,事件中的断点不会停止执行,但我猜这是因为事件发生在调试器启动之前或者可能是因为使用IIS服务器?

0 个答案:

没有答案