我已经使用默认的"允许此预编译站点可更新"多次构建了一个网站,但是在最近的编译中,该网站非常损坏。 在玩弄了.dll(删除和替换它们,在垃圾箱中)之后,我注意到网站的某些部分又开始工作了,但是如果我把所有的原始.dll都放在网站里,就会被破坏。
我正在使用带有多个Ajax Web扩展的aspx页面。 这些是最近添加的,可能是问题的根源。 我取消选中"允许这个预编译站点可更新",它将各种额外的编译代码文件添加到垃圾箱中,网站的所有问题都消失了...... 这是怎么回事? 有什么区别?
我更新网站的方式似乎也没有任何区别,只是每次直接从Visual Studio发布。
任何见解将不胜感激。
取消选中"允许此预编译站点可更新"将编译 .Aspx 页面,而不仅仅是代码文件 (.VB/.CS)。 保持选中状态允许您对 进行某些更改。部署后的 Aspx 文件,无需重新编译(例如 = 移动控件的位置或添加一些额外的 HTML 标记)。
阅读部署问题说明后,错误似乎更有可能是因为 IIS 需要刷新应用程序池。 在低端VPS上,如果您有这种奢侈,有时反弹(重新启动)它是有意义的。
阅读以下 MSDN 文章,了解有关站点预编译的详细信息。
http://msdn.microsoft.com/en-us/library/399f057w(v=vs.80).aspx
http://msdn.microsoft.com/en-us/library/ms247286(v=vs.80).aspx
NoAlias所说的话,我自己的问题有一个答案。 我阅读了这两个链接,发现了以下内容:
仅针对部署进行预编译
为部署进行预编译时仅,编译器从几乎所有 ASP.NET 生成程序集通常在运行时编译的源文件。这包括在页面、.cs和.vb类文件、其他代码文件中编程代码,以及资源文件。编译器从输出。在生成的布局中,为每个生成编译文件的 .aspx 个文件(扩展名为 .compiled)包含指向该页的相应程序集的指针。 要更改网站,包括页面的布局,必须更改原始页面文件,重新编译网站,然后重新部署布局。唯一的例外是站点配置;您可以对 Web.config 文件进行更改在生产服务器上,而无需重新编译站点。 这选项为您的页面提供最大程度的保护,并且启动时的最佳性能。部署和更新的预编译
为部署和更新进行预编译时,编译器从所有源代码生成程序集(页面代码除外单文件页面)以及通常生成的其他文件程序集,例如资源文件。编译器转换.aspx文件放入使用已编译代码隐藏模型并复制的单个文件中他们到布局。 此选项使您能够进行有限的更改编译后,到站点中的 ASP.NET 网页。为例如,您可以更改控件、颜色、字体、以及页面的其他外观方面。您还可以添加控件,如只要它们不需要事件处理程序或其他代码。 当站点首次运行,ASP.NET 执行进一步编译以便从标记创建输出。 注意预编译的可更新站点不允许多个页面引用相同的代码文件类。
我最近对网站进行了更改,以包含 2 个引用相同代码文件的 aspx 页面(背景中的相同 VB 代码)每个页面的 html 属性略有不同,但需要具有相同的 CodeFiles,因此对于我的第二个 ASP 页面,我删除了自动生成的 VB 代码文件,然后在 HTML 中引用了不同的代码文件。
如上所述,预编译的可更新站点不允许多个页面引用相同的代码文件类。 这就是为什么我的一些页面无法正常工作的原因。
从这一点开始,我需要避免使用默认复选框"允许此预编译站点可更新"; 它必须保持未选中状态,我的网站才能利用引用我的多个页面的 VB 代码文件。
结论:需要预编译引用同一代码文件的多个 aspx 页才能正常运行。 这意味着如果不重新弃权,该网站将无法对其进行任何更改。