全局asax Application_End在调试会话开始时触发

时间:2014-11-20 15:26:43

标签: c# asp.net-mvc session iis visual-studio-2013

我有一些奇怪的行为,我认为这是不正常的,并且导致我在dev中出现调试问题,因为我必须两次启动调试器。

在本地开发后更改代码后,按F5进行调试会导致Application_End即使IIS尚未运行也会触发。这显然会清除会话状态,并且在引用会话时会在代码中导致我出现问题。

复制(无论如何我)

  • 在VS 2013 Pro中创建新的mvc项目
  • 将以下内容添加到Global .asax

    protected void Application_End()
    {
        string test = "";
    }
    
  • 现在使用编辑并继续(即IIS Express将启动并在每个调试会话结束时)点击F5。在某些时候 - 通常在第一页被渲染时 - 断点被击中而会话丢失。

我意识到如果IIS已经运行,这将是正常行为,因为已编译的程序集会触发应用程序域回收。但是,IIS尚未运行,它是由VS在调试会话开始时由F5启动的,我已经检查了任务管理器中的进程。

我甚至经历过一个只包含一个控制器,一个视图和一个viewbag变量的项目的行为。

它与浏览器无关,因为与镀铬相同 没有IIS日志或事件日志
它第二次正常工作(我想没有改变的组件来触发回收)

为了向自己证明这是不正常的,我已经使用VS 2013 Ultimate在我自己的机器上重复测试并且不能让它失败!

两台机器都运行Win 7 64位和IIS Express 8。

有没有人知道可能导致IIS结束我的应用程序的原因是什么?

更新
我已经在遇到问题的机器上托管的Win 7 64位VM上尝试了相同的测试,并且它有效 然后我将我的dev复制到VM,这也没有问题!

因此,我的工作机器上出现了IIS Express 8或VS 2013 Pro的错误。

是否有人知道可能已损坏或更改的内容导致此问题?

0 个答案:

没有答案