我的Web应用程序成功构建和发布,将文件复制到Web服务器后出现问题,当我尝试浏览多个页面时出现编译错误,但其他页面继续正常运行。
我的第一个想法是某些文件可能没有被成功复制,所以我重新发布并测试了页面,所有看起来都很好,直到我检查了一个不同的页面,这个页面一直在使用之前的出版物,现在表现出同样的问题随后的发布对每次受影响的页面都有类似的影响。
Web服务器上失败的页面以前在Web服务器上运行的页面尚未针对此发布进行更改,并且在Visual Studio 2010 Debug中继续正常工作。
我已经回收了应用程序池,重新启动了网站并重新启动了服务器。
错误日志中的错误是:
GAE:: System.Web.HttpException (0x80004005): The file /XXXX.aspx has not been pre-compiled, and cannot be requested.
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)
编辑:我已经复制了其中一个失败页面的源aspx和cs文件(重命名该类)并重新发布了解决方案。新页面与其失败的对应物并排工作。
答案 0 :(得分:3)
此错误可能是红色鲱鱼,通常会掩盖真正的错误。
IIS应用,physcial目录和受影响文件的第一次检查权限是正确的。
如果不是权限,请仅在网络服务器上将自定义错误设置为RemoteOnly并重新发布。在.net 4中,使用以下选项发布应用程序,“允许预编译的站点可更新”和“使用固定的命名约定和单页程序集”
当部署到网络服务器时,您应该找到现在报告的正确问题,这将是一个缺少的自定义或第三方程序集,这可能是最近添加和删除,或者从过去再次抬头的爆炸声明显的原因(这是我们的问题,汇编没有以任何形式使用,但在配置文件中定义,因此下了几个表格)
希望这可以帮助您解决问题 - 祝您好运!
答案 1 :(得分:1)
我遇到了VS2017和已经运行很长时间的应用程序的相同问题。
该应用程序以前是通过XCOPY部署进行部署的,而没有发布。切换到发布方法后,错误出现。 经过一番重新研究,我们发现在生产中,web.config中仍然有一个配置文件条目,而由于开发不再需要它,因此在开发中已将其删除。
在web.config中取消注释节点概要文件后,该应用程序已启动并正在运行。
在部署时,我们还删除了除APP_DATA和web.config之外的所有文件。
答案 2 :(得分:0)
可能与文件或IO相关。你复制了所有文件,而不仅仅是二进制文件吗?您可以尝试删除所有旧文件(先备份),这样就不会出现写保护或安全问题。
答案 3 :(得分:0)
我有同样的问题。
有些页面在发布后尝试打开时会抛出错误。
对我有用的一个解决方案是..当我检查那些显示错误的aspx文件时,有CodeFile而不是CodeBehind ......
我从CodeFile更改为CodeBehind,它运行正常。 (不知道是不是单独的CodeBehind在bin目录中可用的原因..我是新手,可能是这个原因不对。如果我错了请纠正我)
但问题是,在localhost上,某些文件在保留为CodeBehind时会抛出错误。
答案 4 :(得分:0)
我认为该线程可能与之相关:
{{3}}
如此处所示,我们的解决方案是删除以下所有文件:
C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\root
答案 5 :(得分:0)
我知道这个问题很老,但如果有人遇到这个问题,在使用版本、文件等之前,我可以建议先清理项目吗?经过非常紧张的一天,这就是我的问题所在。