【问题标题】:Fix for : System.Web.HttpException: The file has not been pre-compiled, and cannot be requested修复:System.Web.HttpException:文件未预编译,无法请求
【发布时间】:2018-09-26 20:46:59
【问题描述】:

我们发布了我们的网站,一切正常。几天后,奇怪的事情发生了。我们得到“文件'xxx.cshtml'尚未预编译,无法请求。”

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

当我们遇到错误时,我们甚至复制了网站,然后根据这些文件创建另一个网站,它工作正常! 有什么建议会导致这个问题吗?

提前致谢。

【问题讨论】:

  • 嗨。你解决了这个问题吗?我们刚刚在实时 Web 服务器上经历了同样的事情。一切工作了几天,然后突然开始抛出这个错误。相同代码的部署也为我们修复了它,但我们正在尝试调查原因。谢谢。

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


【解决方案1】:

关于错误

System.Web.HttpException: 文件未预编译,无法请求 在 web.config 中指定引用时会出现此错误,并且 部署文件夹/站点不包含安装在 system 或 bin 文件夹不包含它们(如果它们是私有的 组件)。例如:(添加组件=“名称空间1.名称空间2, 版本=x.x.x.x,文化=中性,PublicKeyToken=31bf3856ad364e35"/) 如果您的 web.config 包含任何这样的程序集并已部署 服务器在 bin 或 GAC 中不包含这些程序集,则此错误 会发生。


场景:

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

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

  2. 第二种情况是当我们在 VS.Net 直接从 IIS(http 项目)运行,然后我们再次将其发布到相同的位置,并选中“可更新”。同一位置会有开发文件会导致类似的错误。

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

来源:微软支持

显然,这是与缺少 ReportViewer .dll 引用有关的另一种情况


解决方案

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

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

  • 其他人,不知何故修复了这个安装“Microsoft Web Service Enhancements v3.0”。 Downlaod here。它可能会提供缺少的所需 .dll

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

【讨论】:

  • 感谢您的回复。我们已经比较了参考文献,同一版本工作了 1 个月。这个问题最近才开始。
猜你喜欢
  • 2010-09-29
  • 2010-10-10
  • 1970-01-01
  • 2019-05-19
  • 2013-08-18
  • 1970-01-01
  • 2019-08-11
  • 2021-10-24
  • 2011-11-06
相关资源
最近更新 更多