我使用Visual Studio 2008的模板为ASP.NET 3.5 Web应用程序(而非网站)创建了一个Web部署项目。
我编译了创建部署所需文件的项目。我将生成的文件夹(bin,静态文件和所有带有aspx占位符的文件夹等)复制到我想测试应用程序的登台服务器。
如果我不标记选项“允许此预编译网站可更新”,我会在浏览器中加载的每个页面上收到此错误消息:< / p>
System.Web.HttpException file PAGENAME.aspx has not been pre-compiled, and cannot be requested.
堆栈跟踪中的最后一行:
System.Web.Compilation.BuildManager.GetVPathBuildResultInternal( VirtualPath virtualPath, Boolean noBuild, Boolean allowCrossApp, Boolean allowBuildInPrecompile) +8756366
如果我检查选项,一切都很好(我猜因为实际的aspx / ascx仍然是原始形式)。
知道我在这里缺少什么吗?我忘了复制一些设置或特殊文件吗?
谢谢!
注意:
答案 0 :(得分:7)
所有ASPX文件只应包含
这是由...生成的标记文件 预编译工具,应该 不能删除!
删除bin文件夹中的所有内容并再次发布网页。 确保从进行发布的目录中获取文件。
确保复制bin文件夹中包含的.compiled
文件。
答案 1 :(得分:1)
为了记录,我忘了复制这些“.compiled”文件(MSDN documentation: File Handling During ASP.NET Precompilation):
用于ASP.NET Web中的可执行文件 应用程序,编译器程序集 和.compiled文件名的文件 延期。程序集名称是 由编译器生成。该 .compiled文件不包含 可执行代码。相反,它包含 只有ASP.NET的信息 需要找到合适的 组装
预编译的应用程序之后 部署后,ASP.NET使用程序集 在Bin文件夹中处理请求。 预编译输出包括 .aspx或.asmx文件作为占位符 用于页面。占位符文件 不包含任何代码。它们只存在于 提供一种调用ASP.NET的方法 特定页面请求以及该文件 权限可以设置为restrict 访问页面。