【问题标题】:Precompiled ASP.NET web application: error "System.Web.HttpException file filename.aspx has not been pre-compiled, and cannot be requested."预编译的 ASP.NET Web 应用程序:错误“System.Web.HttpException 文件 filename.aspx 尚未预编译,无法请求。”
【发布时间】:2010-09-29 14:50:35
【问题描述】:

我使用 Visual Studio 2008 模板为 ASP.NET 3.5 Web 应用程序(不是网站)创建了一个 Web 部署项目。

我编译了创建部署所需文件的项目。我将生成的文件夹(bin、静态文件和所有带有 aspx 占位符的文件夹等)复制到我想要测试应用程序的登台服务器。

如果我标记选项“允许此预编译的站点可更新”,我在浏览器中加载的每个页面上都会收到以下错误消息: System.Web.HttpException 文件 PAGENAME.aspx 尚未预编译, 并且不能被请求。

堆栈跟踪的最后一行:

System.Web.Compilation.BuildManager.GetVPathBuildResultInternal( VirtualPath virtualPath, Boolean noBuild, Boolean allowCrossApp, 布尔值 allowBuildInPrecompile) +8756366

如果我选中该选项,一切都很好(我猜是因为实际的 aspx/ascx 仍然以其原始形式存在)。

知道我在这里缺少什么吗?是否有一些我忘记复制的设置或特殊文件?

谢谢!

注意事项:

  • 我引用了一些第三方程序集
  • 我检查了暂存服务器上的 bin 文件夹。它包含包含所有类的预编译程序集(我使用反射器分析程序集)。

【问题讨论】:

    标签: asp.net deployment precompiled


    【解决方案1】:

    所有的 ASPX 文件应该只包含

    这是一个标记文件,由 预编译工具,并且应该 不能被删除!

    删除 bin 文件夹中的所有内容并再次发布网络。 确保从您进行发布的目录中获取文件。

    确保您也复制了 bin 文件夹中包含的 .compiled 文件。

    【讨论】:

    • 感谢您的回答!它没有包含确切的解决方案,但它让我重新检查了 bin 文件夹。我忘记在我的自动复制过程中将“.compiled”文件插入服务器。我会编辑你的答案,我会接受。
    【解决方案2】:

    为了记录,我忘了复制这些“.compiled”文件(MSDN documentation: File Handling During ASP.NET Precompilation):

    对于 ASP.NET Web 中的可执行文件 应用程序,编译器程序集 和具有 .compiled 文件名的文件 延期。程序集名称是 由编译器生成。这 .compiled 文件不包含 可执行代码。相反,它包含 只有 ASP.NET 的信息 需要找到合适的 组装。

    预编译后的应用程序 部署后,ASP.NET 使用程序集 在 Bin 文件夹中处理请求。 预编译输出包括 .aspx 或 .asmx 文件作为占位符 页面。占位符文件 不包含代码。它们的存在只是为了 提供一种调用 ASP.NET 的方法 特定页面请求等文件 权限可以设置为限制 访问页面。

    【讨论】:

      猜你喜欢
      • 2018-09-26
      • 1970-01-01
      • 2013-08-18
      • 1970-01-01
      • 2010-10-10
      • 2019-08-11
      • 2019-05-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多