是的我知道,这个问题已被问过很多次了。
但这并不完全相同。实际上我认为错误信息是准确的!
通常,当您查看已发布的ASPX文件时,您只看到"这是预编译工具生成的标记文件,不应删除!"。
就我而言,在构建和发布之后,当我查看已发布的页面时,我会看到完整的源代码。
我使用的是新安装的VS2012副本,因此显然不太正确。
有什么建议吗?
谢谢:)
答案 0 :(得分:9)
过去几天我一直在努力解决这个问题。至少在我的情况下,错误消息完全是误导性的,与预编译的网站无关。有很多文章或帖子提供了许多不同的答案,只会增加混乱。我个人认为这个错误主要是由于缺少引用或版本控制不正确引起的。为了尽快解决问题,您必须对此进行排除,或以其他方式修复缺失/错误的引用。
为此,您需要使用名为“Assembly Binding Log Viewer”的工具。此工具将告诉您哪些引用丢失或版本错误。如果缺少/不匹配的参考,那么继续修复它;否则你需要做其他魔术,比如检查App Pool是32位还是权限。
步骤:
在您的服务器上创建以下文件夹
C:\ fuslog C:\ fuslog \日志
将程序集绑定日志查看器复制到您的服务器C:\ fuslog:
您可以在这样的位置找到该程序
C:\ Program Files(x86)\ Microsoft SDKs \ Windows \ v7.0A \ Bin \ fuslogvw.exe
您可能需要查看“Program Files”而不是“Program Files(x86)” 或者查看不同的版本而不是“v7.0A”(某些较新的版本可能不适用于较旧的Windows版本)
在服务器上执行fuslogvw.exe(您可能需要右键单击并以管理员身份运行)
点击“设置...”
确保“检查磁盘日志绑定失败”
选中启用自定义日志路径并在框中输入以下内容:C:\ fuslog \ logs
点击确定
回收/重置您的应用池以强制执行新的绑定
点击“刷新”。现在,您可以在此处看到失败的绑定
找到确切绑定的更好方法是转到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 :(得分:6)
通常,当您查看已发布的ASPX文件时,您只看到“这是预编译工具生成的标记文件,不应删除!”。
嗯,不是真的“正常” - 你必须明确地设置 。
常用方式 - 打开Visual Studio,右键单击项目,“发布”,选择配置文件
检查配置文件设置,或者如有必要,创建新的配置文件并(重新)设置为您想要的。
设置的屏幕截图,您可以预先编译,“可更新”或“不可更新”(完全编译,您可以看到上面提到的注释),等等。
如下所示,“正常”(默认)设置为“可更新”。取消选中==所有内容都已编译 - 甚至(cs / vb)html,aspx等(文件中无源可查看)
... H个
答案 2 :(得分:2)
最后,我发现了问题。如果您使用像我这样的MVC框架,请更新您的MVC版本。在我的情况下,我将MVC 4.0.0.0更改为4.0.0.1并检查所有项目引用的“本地复制”属性为“True”。之后我的问题解决了。请查看所有配置文件(4.0.0.0-> 4.0.0.1)
中的MVC版本注意asp编译器警告消息。