1

我有一个用于编辑磁盘上的 XML 文件的内部应用程序。XML 文件被加载到存储在 ApplicationState 中的对象模型中。

我需要保存这些数据。一种选择是每次用户更改某些数据时都执行此操作。但是,这似乎有点低效 - 每次进行更改时都将数据写入磁盘。

相反,是否可以在用户关闭浏览器时以及在 Web 服务器退出之前收到通知?因此,数据将在每次会话结束时保存,加上计算机关闭时等。我认为 Global.asax 中的 Application_End()、Application_Error() 和 Session_End() 会提供这个,但这些方法不似乎被称为。

4

1 回答 1

0

Session_End 应该被调用。

您在哪个版本的 IIS 上运行,或者您在 Visual Studio 开发服务器中托管?

让 Session_End 触发的步骤:

  1. 在 VS 2008 中创建一个新网站

  2. 编辑 web.config:

    添加<sessionState mode="InProc" cookieless="true" timeout="1"/><system.web>

  3. 使用如下所示的代码添加 Global.asax 文件。

    void Session_End(object sender, EventArgs e)

    {

    Console.WriteLine( "Session_End" );

    }

  4. Console.WriteLine在调用上设置断点。

  5. 按 F5 并在 IE 或 Firefox 中查看页面加载。

  6. 等待1分钟左右。

  7. 断点应在 IDE 中以红色突出显示。

于 2009-10-20T17:45:24.870 回答