我们发布了我们的网站,一切正常。几天后,发生了一些奇怪的事。我们正在获取"文件' xxx.cshtml'没有预先编译,也不能被要求。"
重置应用程序池,甚至重新启动IIS都无法帮助我们解决问题。即使重置Web服务器机器也没有解决问题。但是当我们再次重新复制已发布的文件时,网站又开始工作了。 我们将问题网站文件与新文件进行了比较,都是一样的。没有什么遗漏。因此,每隔两三天,我们就会遇到同样的错误,我们可以解决的唯一方法是重新复制文件。
我们甚至在收到错误时复制了网站,然后根据这些文件创建了另一个网站,它运行正常! 有什么可能导致这个问题的建议吗?
提前致谢。
答案 0 :(得分:0)
System.Web.HttpException:该文件尚未预编译,无法请求 在web.config中指定引用时会出现此错误 部署文件夹/站点不包含安装在这些dll中的dll system或bin文件夹不包含它们(如果它们是私有的) 组件)。例如:( add assembly =“Namespace1.NameSpace2, Version = x.x.x.x,Culture = neutral,PublicKeyToken = 31bf3856ad364e35“/) 如果您的web.config包含任何类似的程序集并已部署 服务器在bin或GAC中不包含这些汇编,然后是此错误 会发生。
以下是可能产生此错误的一些可能情况:
当我们发布网站时,“可更新”检查OFF然后 复制部署位置上的某些文件,这些文件中包含一些标记或代码。通过 将“可更新”检查置为OFF我们指示asp.net编译器将所有标记和代码编译成dll文件,以便asp.net上的其他内容不会考虑运行时编译。但是如果它需要(由于存在这样的内容),它将抛出该错误。
第二种情况是我们配置了一个Web应用程序 VS.Net直接从IIS(http项目)运行,然后我们再次将它发布到同一位置,并将“updateable”设置为OFF。在同一位置会有开发文件,这会导致类似的错误。
另一种情况是我们有一个预编译的网站,并在其中 它的根文件夹我们有另一个文件夹,其中包含另一个asp.net的内容 应用程序,但没有在IIS中标记为应用程序。 ASP.Net跟踪asp.net IIS中虚拟目录标记为应用程序时在IIS上运行的应用程序。父文件夹中包含未编译内容的子文件夹 预编译的应用程序将再次导致此错误。
来源:Microsoft支持
显然,这是另一种情况,其原因与缺少ReportViewer .dll引用相关
我在发布应用程序时发现了一件事 不要复制bin文件夹中的所有依赖程序集。所以我只是 手动将它们复制到服务器,现在每件事都在工作
其他人以某种方式解决了这个安装“Microsoft Web Service Enhancements v3.0”的问题。 Downlaod here。它可能提供缺少必需的.dll
Here,有人修复了它,在部署选项中启用“为每个页面和控件输出创建单独的程序集”