我有一个VS 2005网站,我使用"发布网站"发布,我清除了所有三个复选框.我还有一个部署项目,它可以获取已发布的文件并创建一个MSI.然后,我将该软件包安装在单独的测试服务器上.
换句话说,整个网站是预编译的.但是,当我转到名为"Services"的特定子文件夹中的任何.aspx文件时,我得到一个HttpException:
System.Web.HttpException:文件'/myapp/Services/mypage.aspx'尚未预编译,无法请求.
如果我转到其他文件夹中的.aspx文件,无论是根目录还是其他子文件夹,它都能正常工作.
mypage.aspx本身的内容是: <%@ Page Language="C#" AutoEventWireup="true" CodeFile="mypage.aspx.cs" Inherits="Services_mypage" %>"
在/myapp/bin
文件夹中,我可以看到一个mypage.aspx.989dc2fb.compiled
文件.这个内容似乎指向bin文件夹中也存在的某个程序集.
为什么会出现此错误?.compiled文件在那里,程序集在那里,并且该程序集中存在有问题的类型(我可以在对象浏览器中看到它).它是关于.compiled文件的名称或内容的吗?我有某种错误的版本吗?.compiled文件名中看似随机的数字是什么意思,重要的是什么?
我还想提一下,这个问题突然出现了,我不确定自从几天前它正常工作以来可以做些什么改变(但据我所知,没有).
我没有那个错误,但经过一点点Google搜索我遇到了这个链接,我不确定你是否已经看过它:http://forums.asp.net/t/956297.aspx
编辑(添加关键文字):
当在web.config中指定引用并且部署文件夹/站点不包含系统中安装的这些dll或bin文件夹中不包含它们时(如果它们是私有程序集),将出现此错误.例如:(add assembly ="Namespace1.NameSpace2,Version = xxxx,Culture = neutral,PublicKeyToken = 31bf3856ad364e35"/)如果你的web.config包含这样的任何程序集,并且部署的服务器在bin或GAC中不包含这些集合,那么这个会发生错误.
人们报告说,目标服务器上缺少的程序集最终成为根本原因,在他们的情况下,但他们有与您相同的错误.奇怪的.
也许那就是问题?
我将网站从2.0升级到4.0时出现此错误.该错误是由PrecompiledApp.config
站点root
目录中的文件引起的.删除该文件后,该网站开始工作.
正如所有上述答案的脚注一样,通过重新发布来解决问题以替换丢失的程序集......虽然我之前使用相同的解决方案解决了这个问题,但我刚刚遇到了另一个可能会帮助其他人的原因.
我的网站运行的AppPool将"启用32位应用程序"设置设置为false.通过应用程序池的"高级设置"对话框将此更改为true,我解决了我的问题.
希望能帮助其他一些可怜的傻瓜.
过去几天我一直在努力解决这个问题.至少在我的情况下,错误消息完全是误导性的,与预编译的网站无关.有很多文章或帖子提供了许多不同的答案,只会增加混乱.我个人认为这个错误主要是由于缺少引用或版本控制不正确引起的.为了尽快解决问题,您必须对此进行排除,或以其他方式修复缺失/错误的引用.
为此,您需要使用名为"Assembly Binding Log Viewer"的工具.此工具将告诉您哪些引用丢失或版本错误.如果缺少/不匹配的参考,那么继续修复它; 否则你需要做其他魔术技巧,比如检查应用程序池是32位还是权限.
脚步:
在您的服务器上创建以下文件夹
C:\ fuslog C:\ fuslog\logs
将程序集绑定日志查看器复制到您的服务器C:\ fuslog:
你可以在这样的位置找到该程序
C:\ Program Files(x86)\ Microsoft SDKs\Windows\v7.0A\Bin\fuslogvw.exe
您可能需要查看"Program Files"而不是"Program Files(x86)"或查看不同的版本而不是"v7.0A"
在服务器上执行fuslogvw.exe
点击"设置..."
确保选中"将日志绑定失败到磁盘"
选中Enable custom log path并在框中输入以下内容:C:\ fuslog\logs
单击"确定"
回收/重置您的应用程序池以强制执行新的绑定
单击"刷新".现在,您可以在此处查看失败的绑定
找到确切绑定的更好方法是转到c:\ fuslog\logs\Default.在这里,您可以找到确切的绑定失败.有些是无关紧要的,你需要通过反复试验来找到关键的一个.我的是以下失败:
System.Web.Mvc, Version=4.0.0.1, Culture=neutral, PublicKeyToken=31bf3856ad364e35
我通过在我的网站web.config中添加以下条目来修复此问题:
... ... ......
我希望这有助于其他人快速解决问题.
我遇到了同样的问题。通过删除此文件夹中临时asp.net文件文件夹中的文件,解决了我的问题:
C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\root
这个错误发生在我身上,我解决了它.
如果要发布站点,请检查在Visual Studio中使用固定命名和单页程序集
你会看到这个问题将会解决!