视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
ASP.NET在IIS7中上下文中不可用的解决方法
2020-11-27 22:42:50 责编:小采
文档


Johnny换上Win7已经有几个月的时间,不过前几天重装了系统,依旧用的是Win7,只是今天在打开VS2009工程后在IE中测试时一打开便出现一个错误如下:
请求在此上下文中不可用
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.Web.HttpException: 请求在此上下文中不可用
源错误:
代码如下:

行 28: protected void Application_Start(Object sender, EventArgs e)
行 29: {
行 30: ApplicationConfiguration.OnApplicationStart(Context.Server.MapPath( Context.Request.ApplicationPath ));
行 31:
行 32: }

这下还真奇怪,回想了一下,刚开始用Win7时似乎也是有遇到过这个问题,只是忘记当时是如何解决的。可以确定的是这个肯定跟项目本身无关,因为未重装前是正常的,也就是说跟环境有关了,那就是应该是IIS7的问题了。

搜索引擎的好就是造就了懒人,遇到问题,不是“百度一下你就不知道”,而是Google一下你会知道,所以还是上Google上找了一下,确实跟我的判断没错,引用周星星的话说“我真是天才呀”。问题很简单,就是Web应用程序池配置错误造成的,这个错误应该是IIS7所特有的。

解决办法:

在IIS7->当前应用程序虚拟目录->右键->管理应用程序->高级设置

修改应用程序池属性:DefaultAppPoolClassic .NET AppPool (也即是经典)即可。

又或者是直接到应用程序池中,双击DefaultAppPool ,在弹出的窗口中把“托管管道模式”改成经典,确定退出即可。
Tis:
在 IIS 7 中,应用程序池有两种运行模式:集成模式和经典模式。应用程序池模式会影响服务器处理托管代码请求的方式。如果托管应用程序在采用集成模式的应用程序池中运行,服务器将使用 IIS 和 ASP.NET 的集成请求处理管道来处理请求。但是,如果托管应用程序在采用经典模式的应用程序池中运行,服务器会继续通过 Aspnet_isapi.dll 路由托管代码请求,其处理请求的方式就像应用程序在 IIS 6.0 中运行一样。

更多关于IIS 7 应用程序池的托管管道模式中集成模式的介绍,可以移步到这里了解一下。

下载本文
显示全文
专题