当前位置:  开发笔记 > 后端 > 正文

ASP.NET应用程序转到500.21 ...直到IIS重置+清除Tempoary ASP.NET缓存

如何解决《ASP.NET应用程序转到500.21直到IIS重置+清除TempoaryASP.NET缓存》经验,为你挑选了2个好方法。

我们的QA实验室看到了奇怪的模式.我们有两个ASP.NET应用程序,每个都部署在同一个Windows 2008 SP2 +框中.我们的应用程序池在域帐户中运行,并设置为永不重新循环.两个应用程序使用相同的1 App Pool.

运行几个小时后,新用户浏览我们应用程序中的页面会收到IIS7错误页面,错误为500.21.

如果我们什么都不做,但:

1)IISRESET 2)将文件夹更改为c:\ Windows\Microsoft.NET\Framework64\v2.0.50727\Temporary ASP.NET Files和"rd"2个应用程序.

然后浏览我们的网络应用程序,一切都很好.

然而几个小时后,500.21错误返回.

令我感到奇怪的是,清除"Temporary ASP.NET Files"文件夹和问题消失之间的关系似乎很明显.我在安装新版本的应用程序时尝试清除"Temporary ASP.NET Files"文件夹,但不是这样.

这种关系对任何人来说都很熟悉吗?是否有一些新的IIS7功能在这里工作?

错误文字:

在应用程序"默认Web站点/国家报"中的服务器错误
Internet信息服务7.0
错误摘要
HTTP错误500.21 -内部服务器错误
处理程序"PageHandlerFactory集成"有一个坏模块"ManagedPipelineHandler"在其模块列表
详细错误信息
模块IIS Web核心
通知ExecuteRequestHandler
处理程序PageHandlerFactory-集成
错误代码0x8007000d
请求的URL http:// localhost:80/PAIS/Admin.aspx

物理路径C:\ 0_Georgia\GA_IS_100142\PortfolioArchiveImageServer\Admin.aspx
登录方法匿名
登录用户匿名
最有可能的原因:
•未安装ASP.NET或未完全安装ASP.NET.
•发生配置印刷错误.
•存在不利的前置条件评估.
您可以尝试的事项:
•如果缺少ManagedPipelineHandler,请确保:
o ManagedEngine所在.
o ManagedPipelineHandler具有正确的前置条件.
•安装ASP.NET.
•确保所有system.webServer/handlers@modules都在system.webServer/modules@name中.
•查看和部分中的前提条件.
链接和更多信息IIS核心无法识别该模块.
查看更多信息»

提前致谢,

霍华德霍夫曼



1> Umair Ahmed..:

面对同样的问题,修复很容易.

1)打开visual studio 2010命令提示符.

2)运行命令 aspnet_regiis.exe -i



2> Howard Hoffm..:

我们在MS ASP.NET支持的帮助下找到了实际问题.这很微妙.我认为MS已经表示他们将在App Fabric版本(现在是RTM)的后续版本中解决这个问题.手指交叉.

在这种情况下,问题始终如一:

1)ASP.NET Web应用程序尚未运行.它包括WCF Net.Pipe和/或Net.Tcp绑定.我认为NetMsmq会出现同样的情况,但没有尝试过.

2)入站NetPipe或NetTcp WCF Windows激活服务请求是启动App域的初始请求.

3)应用程序使用"集成"IIS应用程序池(IIS7或IIS 7.5)

4)应用程序在第一个请求期间使用HttpServerUtility.Execute.

事实证明,我们的应用程序在第一次WCF操作期间触发了ASP.NET运行状况监视事件 - 导致Windows激活服务(WAS)启动应用程序的操作.我们的运行状况监视配置包括TemplatedMailWebEventProvider.

我们的应用程序使用"集成"IIS应用程序池.

TemplatedMailWebEventProvider实现创建一个电子邮件正文为HTML格式.它使用System.Web.HttpServerUtility.Execute(string, TextWriter, Boolean)过载.

对于这个用例,重载是错误的 - 它初始化了一个基于HTTP管道的'经典'IIS应用程序池.因为这是"集成"IIS应用程序池的错误管道,所以管道会因下一个HTTP请求而损坏 - 这实际上是第一个入站HTTP请求.

因此,在重新循环应用程序之前,所有未来的HTTP请求都会收到500.21错误.您不需要执行相对激烈的IISRESET步骤,清除临时ASP.NET缓存以清除错误 - 只需通过保存web.config重新启动应用程序并避免导致错误的特定启动路径.

MS为我们提出了一种解决方法 - 使用SimpleMailWebEventProvider而不是TemplatedMailWebEventProvider.这确实有效,因为它从第一个请求的代码路径中取出HttpServerUtility.Execute.

我建议MS引入一个新的web.config 布尔设置 - UseIntegrated让应用程序指定要初始化的Appof类型.显然,IIS不会将App Pool类型转发给ASP.NET,所以我的建议就是解决这个问题.

TemplatedMailWebEvent提供程序比SimpleMailWebEventProvider更加用户友好,我们希望MS能解决这个问题.

谢谢大家的阅读,

霍华德霍夫曼

推荐阅读
罗文彬2502852027
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有