C# 文件';blahblah.aspx';尚未预编译,无法请求

C# 文件';blahblah.aspx';尚未预编译,无法请求,c#,asp.net,visual-studio-2012,asmx,C#,Asp.net,Visual Studio 2012,Asmx,是的,我知道,这个问题已经被问了很多次了 但这并不完全相同。事实上,我认为错误信息是准确的 通常,当您查看已发布的ASPX文件时,您只会看到“这是由预编译工具生成的标记文件,不应删除!” 在我的例子中,在构建和发布之后,当我查看发布的页面时,我会看到完整的源代码 我正在使用一个新安装的VS2012副本,因此显然有些地方不太正确 有什么建议吗 谢谢:) 通常,当您查看已发布的ASPX文件时,您只会看到“这是由预编译工具生成的标记文件,不应删除!” 嗯,不是真正的“正常”——你必须明确地设置它 通常

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

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

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

在我的例子中,在构建和发布之后,当我查看发布的页面时,我会看到完整的源代码

我正在使用一个新安装的VS2012副本,因此显然有些地方不太正确

有什么建议吗

谢谢:)

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

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


通常的方法-打开VisualStudio,右键单击项目“发布”,选择概要文件

检查配置文件设置,如有必要,创建新的配置文件并(重新)设置为所需

设置的屏幕截图,您可以在其中预编译、使其“可更新”或不可更新(完全编译,您可以看到上面提到的注释),等等

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


嗯…

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

为此,您需要使用名为“程序集绑定日志查看器”的工具。此工具将告诉您哪些引用丢失或版本错误。如果存在丢失/不匹配的引用,则继续并修复它;否则,您需要执行其他魔术,如检查应用程序池是否为32位或权限

步骤:

  • 在服务器上创建以下文件夹

    C:\fuslog C:\fuslog\logs

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

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

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

    您可能需要查看“程序文件”而不是“程序文件(x86)” 或者查看不同的版本,而不是“v7.0A”(某些较新版本可能无法在较旧的Windows版本上工作)

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

  • 点击“设置…”

  • 确保选中“磁盘日志绑定失败”

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

  • 点击OK

  • 回收/重置应用程序池以强制执行新绑定

  • 点击刷新。现在您可以在这里看到失败的绑定

  • 找到确切绑定的更好方法是转到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>
    
    
    ...
    ...
    ...
    ...
    

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

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


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

    您能告诉我们您是如何发布您的站点的吗?通常的方法是:打开Visual Studio,右键单击项目,“发布”,选择配置文件等。您在此文件中添加的任何引用,其ddl可能尚未添加,或者您的网络配置中缺少某些内容。我只是胡思乱想,但公布的文件是错误的。它们不应该包含任何源代码,它们应该只包含问题中显示的标记文本。听起来像是在发布一个站点时关闭了预编译选项,而在一个站点上打开了这些选项。见EdSF的答案。您可能还需要删除现有站点并重新部署它。立即!我仍然得到错误,所以它可能是一个参考问题。会解决这个问题的…有同样的问题,我编译的CSHTML文件无法加载,我必须将
    更改为
    (注意-4.0.0.1)。我无法完成这些步骤,因为1。将fuslogvw.exe复制到您提到的文件夹时,它无法运行(无错误),并且2。当我从
    bin
    文件夹运行它时,“设置”下的所有选项都变灰。你知道为什么会这样吗?如果选项变灰,你需要以管理员的身份运行它