修复:System.Web.HttpException:文件尚未预编译,无法请求

时间:2018-04-17 01:57:19

标签: javascript c# asp.net-mvc iis

我们发布了我们的网站,一切正常。几天后,发生了一些奇怪的事。我们正在获取"文件' xxx.cshtml'没有预先编译,也不能被要求。"

重置应用程序池,甚至重新启动IIS都无法帮助我们解决问题。即使重置Web服务器机器也没有解决问题。但是当我们再次重新复制已发布的文件时,网站又开始工作了。 我们将问题网站文件与新文件进行了比较,都是一样的。没有什么遗漏。因此,每隔两三天,我们就会遇到同样的错误,我们可以解决的唯一方法是重新复制文件。

我们甚至在收到错误时复制了网站,然后根据这些文件创建了另一个网站,它运行正常! 有什么可能导致这个问题的建议吗?

提前致谢。

1 个答案:

答案 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中不包含这些汇编,然后是此错误   会发生。

方案:

以下是可能产生此错误的一些可能情况:

  1. 当我们发布网站时,“可更新”检查OFF然后 复制部署位置上的某些文件,这些文件中包含一些标记或代码。通过 将“可更新”检查置为OFF我们指示asp.net编译器将所有标记和代码编译成dll文件,以便asp.net上的其他内容不会考虑运行时编译。但是如果它需要(由于存在这样的内容),它将抛出该错误。

  2. 第二种情况是我们配置了一个Web应用程序 VS.Net直接从IIS(http项目)运行,然后我们再次将它发布到同一位置,并将“updateable”设置为OFF。在同一位置会有开发文件,这会导致类似的错误。

  3. 另一种情况是我们有一个预编译的网站,并在其中 它的根文件夹我们有另一个文件夹,其中包含另一个asp.net的内容 应用程序,但没有在IIS中标记为应用程序。 ASP.Net跟踪asp.net IIS中虚拟目录标记为应用程序时在IIS上运行的应用程序。父文件夹中包含未编译内容的子文件夹 预编译的应用程序将再次导致此错误。

  4. 来源:Microsoft支持

    显然,这是另一种情况,其原因与缺少ReportViewer .dll引用相关

    解决方案

    • Some people谈到手动添加丢失的丢失程序集文件。
      

    我在发布应用程序时发现了一件事   不要复制bin文件夹中的所有依赖程序集。所以我只是   手动将它们复制到服务器,现在每件事都在工作

    • 其他人以某种方式解决了这个安装“Microsoft Web Service Enhancements v3.0”的问题。 Downlaod here。它可能提供缺少必需的.dll

    • Here,有人修复了它,在部署选项中启用“为每个页面和控件输出创建单独的程序集”