none
关于部署到 win7 上 IIS 7.5 中的 ASP.Net 的程序中的 Global.asax 类中 Application_Start 方法不执行的问题 RRS feed

  • 问题

  • 我的 web 项目是 .net framework 4.0 版本的。用到了 Global 类中的 Application_Start 方法,但是经过数次试验发现,只有当我采用 Visual Studio 2010 调试,或者将 win7 上的 IIS7.5 对应我的项目的应用程序池改为“经典”才行,而一旦用“集成”模式,则无论怎么替换 bin 下的 dll,或者修改 web.config 或者重启 IIS 甚至重启系统,在调试时都不进入我在 Application_Start 方法中设置的断点。

    而同一个类中的 Application_BeginRequest 方法倒是无论什么情况都可以正常被调用。

    请问,这是怎么回事呢???

    谢谢大家!

    2011年1月24日 1:12

答案

  • 这应该是“集成”模式的一个特点,你可以找下相关的文档

    【孟子E章】

     

     

    The most common is "Request is not available in this context" exception. This happens when your implementation is about to access Request object in Application_Start method of global.asax file. Error is due to design change in the II7 Integrated pipeline that makes Request object unavailable in Application_Start. The Classic mode has no problems with it. What you can do about it is to change your app to avoid reference to Request context inside Application_Start or running app under Classic mode (not recommended). More about avoiding reference to Request object you can find on Mike Volodarsky's blog.

    2011年1月24日 9:20
    版主

全部回复

  • 这应该是“集成”模式的一个特点,你可以找下相关的文档

    【孟子E章】

     

     

    The most common is "Request is not available in this context" exception. This happens when your implementation is about to access Request object in Application_Start method of global.asax file. Error is due to design change in the II7 Integrated pipeline that makes Request object unavailable in Application_Start. The Classic mode has no problems with it. What you can do about it is to change your app to avoid reference to Request context inside Application_Start or running app under Classic mode (not recommended). More about avoiding reference to Request object you can find on Mike Volodarsky's blog.

    2011年1月24日 9:20
    版主
  • 嗯,谢谢您的指点。

    不过……啊……好不甘心啊……

    微软怎么可以这样……

    不过网上大家讨论的都是集成模式下取不到Request 对象,那么看起来似乎提出这些问题的人们的 Application_Start 都是至少可以被正常调用的……

    如果方便的话,能给我一些搜索用的关键字吗?我都试遍了,搜到的要么说是没有采用IIS部署(我恰恰就是在IIS下不行)还有说没有把 Global.asax 文件复制到网站目录下,都不能解决问题啊……

    唉……想用集成模式,居然出这个问题,弄的我现在都是在 Global 中定义静态标志变量,然后在 Application_BeginRequest 中来处理,感觉恶心得很……

    2011年1月24日 9:32
  • 有时间我测试一下
    【孟子E章】
    2011年1月25日 9:00
    版主
  • 嗯!谢谢您了,希望不会是我的环境的问题,要不就浪费您的时间了……

    再次感谢!

    2011年1月26日 1:59