我们在其中一台生产机器上运行了Windows更新。 在此之后,我们所有的asp.net应用程序都停止了工作并给了我们以下错误
System.Web.HttpCompileException (0x80004005): C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files\root\4a73fd31\133ab85b\App_Web_list.aspx.73bf660c.oobh7mac.0.vb : (0): error BC31007: Unable to open module file 'C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files\root\4a73fd31\133ab85b\App_Web_list.aspx.73bf660c.oobh7mac.0.vb': System Error &Hc0000005& (Visual Basic internal compiler error)
at System.Web.Compilation.AssemblyBuilder.Compile()
at System.Web.Compilation.BuildProvidersCompiler.PerformBuild()
at System.Web.Compilation.BuildManager.CompileWebFile(VirtualPath virtualPath)
at System.Web.Compilation.BuildManager.GetVPathBuildResultInternal(VirtualPath virtualPath, Boolean noBuild, Boolean allowCrossApp, Boolean allowBuildInPrecompile, Boolean throwIfNotFound, Boolean ensureIsUpToDate)
at System.Web.Compilation.BuildManager.GetVPathBuildResultWithNoAssert(HttpContext context, VirtualPath virtualPath, Boolean noBuild, Boolean allowCrossApp, Boolean allowBuildInPrecompile, Boolean throwIfNotFound, Boolean ensureIsUpToDate)
at System.Web.Compilation.BuildManager.GetVirtualPathObjectFactory(VirtualPath virtualPath, HttpContext context, Boolean allowCrossApp, Boolean throwIfNotFound)
at System.Web.Compilation.BuildManager.CreateInstanceFromVirtualPath(VirtualPath virtualPath, Type requiredBaseType, HttpContext context, Boolean allowCrossApp)
at System.Web.UI.PageHandlerFactory.GetHandlerHelper(HttpContext context, String requestType, VirtualPath virtualPath, String physicalPath)
at System.Web.HttpApplication.MaterializeHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)
搜索几分钟后,我找到了一个解决方案,将apppool运行的用户从ApplicationPoolIdentity更改为LocalSystem。
这解决了这个问题,但我觉得我们的应用程序不能像LocalSystem那样运行。
我试图比较" Temporary ASP.NET Files"和"临时ASP.NET文件\ root"一台健康的机器,却找不到任何差异。
有谁知道如何解决这个问题?
编辑: 当我们尝试访问页面而不是在我们尝试编译它时会发生此问题!
答案 0 :(得分:3)
我找到了一个解决方案,我对IIS_USERS
提供了C:\Windows\Temp
完全访问权限。
答案 1 :(得分:2)
昨天也开始在 Windows Server 2003 上使用网站遇到同样的问题,这些网站过去在NETWORK SERVICE
帐户下工作了很久。
NETWORK SERVICE
(在您的情况下为ApplicationPoolIdentity
)具有完全控制权限
C:\ WINDOWS \ Microsoft.NET \ Framework64 \ v4.0.30319 \ Temporary ASP.NET Files
以下是解决此问题的步骤:
答案 2 :(得分:1)
我有类似的情况,我花了几个小时试图解决。在我的情况下,我在Windows 2008R2框上运行。我试图搞乱临时文件安全性,重新安装.net4框架,重启等无济于事。
我经历的最后一步是创建一个全新的应用程序池 - 使用与旧的相同的设置,然后将网站设置为使用新的应用程序池,最后删除旧的应用程序池。
我可以推测的是,有关IIS,.net3,.net4和各种Windows更新导致应用程序池损坏的顺序的问题"某种程度上来说。希望这个金块对某人有用。