我最近将 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
这些事件以不寻常的顺序和错误的时间触发。
ps 忽略“配置注册”
我目前正在使用 Visual Studio 2010 启动该服务,并且属性 -> Web 中的服务器设置设置为“使用本地 IIS Web 服务器”而不是 VSDS。
放置在事件中的断点不会停止执行,除了 Session_Start,但我猜这是因为事件发生在调试器启动之前或再次可能是因为使用 IIS 服务器?