【问题标题】:The file 'blahblah.aspx' has not been pre-compiled, and cannot be requested文件“blahblah.aspx”尚未预编译,无法请求
【发布时间】:2014-06-11 13:44:22
【问题描述】:

是的,我知道,这个问题已经被问过很多次了。

但这并不完全相同。其实我认为错误信息是准确的!

通常当您查看已发布的 ASPX 文件时,您只会看到“这是预编译工具生成的标记文件,不应删除!”。

就我而言,在构建和发布之后,当我查看已发布的页面时,我会看到完整的源代码。

我使用的是新安装的 VS2012 副本,所以显然有些地方不太对劲。

有什么建议吗?

谢谢:)

【问题讨论】:

  • 您能告诉我们您是如何发布网站的吗?
  • 常规方式——打开Visual Studio,右键项目,“发布”,选择配置文件等
  • 您在此文件中添加的任何引用,其 ddl 可能尚未添加,或者您的 webconfig 中的某些内容可能丢失。只是乱七八糟的想法
  • 我是这么想的,但是发布的文件是错误的。它们不应包含任何来源,而应仅包含问题中显示的标记文本。
  • 听起来您正在发布一个关闭了预编译选项的站点,就在打开了这些选项的站点之上。请参阅 EdSF 的答案。您可能还需要删除现有站点并重新部署。

标签: c# asp.net visual-studio-2012 asmx


【解决方案1】:

过去几天我一直在努力解决这个问题。至少在我的情况下,错误消息完全具有误导性,与预编译的网站无关。那里有许多文章或帖子给出了许多不同的答案,这只会增加混乱。我个人认为这个错误主要是由于缺少引用或不正确的版本控制造成的。为了尽快解决问题,您必须排除此问题,或以其他方式修复缺失/错误的参考。

为此,您需要使用名为“Assembly Binding Log Viewer”的工具。该工具会告诉您哪些参考文献缺失或版本错误。如果缺少/不匹配的参考,请继续修复它;否则您需要执行其他魔术技巧,例如检查 App Pool 是否为 32 位或权限。

步骤:

  1. 在您的服务器上创建以下文件夹

    C:\fuslog C:\fuslog\logs

  2. 将程序集绑定日志查看器复制到您的服务器的 C:\fuslog:

    您可以在这样的位置找到该程序

    C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\fuslogvw.exe

    您可能需要查看“Program Files”而不是“Program Files (x86)” 或查看不同的版本而不是“v7.0A”(一些较新的版本可能不适用于旧的 Windows 版本)

  3. 在服务器上执行 fuslogvw.exe(可能需要右键以管理员身份运行)

  4. 点击“设置...”

  5. 确保选中“将失败记录到磁盘”

  6. 选中启用自定义日志路径并在框中输入以下内容:C:\fuslog\logs

  7. 点击确定

  8. 回收/重置您的应用程序池以强制执行新绑定

  9. 单击刷新。现在你可以在这里看到失败的绑定

  10. 找到确切绑定的更好方法是转到 c:\fuslog\logs\Default。在这里,您可以找到确切的绑定失败。有些是无关紧要的,您需要通过反复试验找到关键的。我的是以下失败:

     System.Web.Mvc, Version=4.0.0.1, Culture=neutral, PublicKeyToken=31bf3856ad364e35
    

我通过在我的网站 web.config 中添加以下条目来解决此问题:

<configuration>
    ...
    <runtime>
        ...
        <!-- Added this entry to fix the issue -->
        <dependentAssembly>
            <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
            <bindingRedirect oldVersion="0.0.0.0-4.0.0.1" newVersion="4.0.0.0" />
        </dependentAssembly>
        ...
    </runtime>
    ...
</configuration>

我希望这有助于其他人快速解决问题。

【讨论】:

  • 我无法完成这些步骤,因为 1. 将 fuslogvw.exe 复制到您提到的文件夹时,它无法运行(没有错误),以及 2. 当我从 bin 运行它时文件夹,设置下的所有选项都是灰色的。你知道为什么会这样吗?
  • 如果选项灰显,则需要以管理员身份运行
【解决方案2】:

通常当您查看已发布的 ASPX 文件时,您只会看到“这是预编译工具生成的标记文件,不应删除!”。

嗯,不是真的“正常”——你必须明确地设置

常规方式——打开Visual Studio,右键项目,“发布”,选择配置文件

检查配置文件设置,或者在必要时创建一个新配置文件并(重新)设置为您想要的。

您可以预编译的设置屏幕截图,是否“可更新”(完全编译,您可以看到上面提到的注释)等。

如下图所示,“正常”(默认)设置为“可更新”。取消选中 == 一切都已编译 - 甚至 (cs/vb)html、aspx 等(文件中无法查看源代码)

第...

【讨论】:

  • 准确!我仍然收到错误,所以它可能是一个参考问题。会努力的……
【解决方案3】:

最后,我找到了问题所在。如果您像我一样使用 MVC 框架,请更新您的 MVC 版本。在我的情况下,我将 MVC 4.0.0.0 更改为 4.0.0.1,并将所有项目引用的“本地复制”属性检查为“真”。之后我的问题解决了。请检查所有配置文件中的 MVC 版本(4.0.0.0->4.0.0.1)

并注意 asp 编译器警告消息。

【讨论】:

  • 遇到同样的问题,我编译的 CSHTML 文件无法加载,我不得不将 &lt;bindingRedirect oldVersion="1.0.0.0-4.0.0." newVersion="4.0.0.0" /&gt; 更改为 &lt;bindingRedirect oldVersion="1.0.0.0-4.0.0.1" newVersion="4.0.0.0" /&gt;(注意 -4.0.0.1)。
猜你喜欢
  • 1970-01-01
  • 2013-08-18
  • 2010-10-10
  • 2010-09-29
  • 2019-05-19
  • 2018-09-26
  • 2019-08-11
  • 2021-10-24
  • 1970-01-01
相关资源
最近更新 更多