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

Com*_*r7G 5 c# asp.net asmx visual-studio-2012

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

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

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

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

我正在使用新安装的VS2012副本,所以显然有些不太对劲.

有什么建议?

谢谢 :)

Aid*_*din 9

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

为此,您需要使用名为"Assembly Binding Log Viewer"的工具.此工具将告诉您哪些引用丢失或版本错误.如果缺少/不匹配的参考,那么继续修复它; 否则你需要做其他魔术技巧,比如检查应用程序池是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. 选中Enable custom log path并在框中输入以下内容:C:\ fuslog\logs

  7. 单击"确定"

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

  9. 单击"刷新".现在,您可以在此处查看失败的绑定

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

     System.Web.Mvc, Version=4.0.0.1, Culture=neutral, PublicKeyToken=31bf3856ad364e35
    
    Run Code Online (Sandbox Code Playgroud)

我通过在我的网站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>
Run Code Online (Sandbox Code Playgroud)

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


EdS*_*dSF 6

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

好吧,不是真的"正常" - 你必须明确地设置它.

通常的方式 - 打开Visual Studio,右键单击项目,"发布",选择配置文件

检查配置文件设置,或者根据需要创建新配置文件并(重新)设置为您想要的配置文件.

设置的屏幕截图,您可以预编译,"可更新"或"不可更新"(完全编译,您可以看到上面提到的注释)等.

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

发布配置文件设置

心连心...