Microsoft Expression Web 发布失败 — “文件夹 $FOLDER 包含在基于服务器的站点中。”

Microsoft Expression Web 发布失败 — “文件夹 $FOLDER 包含在基于服务器的站点中。”

我们的一些开发人员使用 Microsoft Expression Web 编写 ASP 和 ASP.NET Web 应用程序。我们的 Web 服务器全部基于 Windows Server 2008 R2 和 IIS 7.5 构建,并分为一组单独的开发、测试和生产服务器。目标是让开发人员将源代码签出到他们的工作站,然后发布进入开发,然后测试,最后使用 Expression 进入生产。我们通过将 IIS 驱动器导出为文件共享来连接 Web 服务器,然后开发人员可以在 Expression 中映射或使用这些文件共享。这适用于一组服务器,但不适用于另一组服务器。当我们尝试从开发服务器发布到测试服务器时,我们收到以下错误:

该文件夹包含在基于服务器的站点中。要访问此站点,您必须使用 Web 服务器的 http:// URL


我不太清楚如何解释这个错误,但我会选择“文件共享向 Expression 公开的目录已被 IIS 用作网站的位置”,如果这是正确的解释,那么这个功能就毫无用处了(难道您想要发布的每个网站都不会由 IIS 提供服务吗?)。我尝试查看服务器上的事件日志,并比较两个服务器组之间的 IIS 配置,但无法立即发现任何明显的问题。我宁愿避免使用其他连接方法(如果可能的话,WebDAV、FTP、SFTP 和 Frontpage Extensions)。

我该如何设置我们的 Web 服务器,以便我们的开发团队可以在开发中处理网站,然后将其发布到测试或生产中,而无需手动复制文件或运行脚本?作为对 Windows 和 IIS 不太熟悉的人,我“做错了吗”?

答案1

我最终向微软寻求支持。事情是这样的:

以前,FrontPage 被用来管理W:\WWW\Development_Intranet开发服务器 ( ) 上主 IIS 目录 ( )中的一个或多个站点IISDEV。FrontPage 使用许多文件来跟踪其所有元数据(请参阅FrontPage 维护的特殊文件和目录列表有关详细信息),这些文件仍留在目录中。这会导致 Expression 检测到该网站或其部分内容由 FrontPage 管理,因此将其作为文件系统发布目标无效;但是,我们无法使用 FrontPage 服务器扩展 (FPSE) 发布到目录,因为虽然元数据文件仍然存在,但实际的 FPSE 尚未安装,因为 FrontPage 自 2006 年以来已贬值。

FPSE 元数据文件不仅限于文件夹路径意义上的一个“站点”。据我了解,如果目录树中某个地方Development_Intranet\Unrelated_Site有剩余文件,则发布到您的站点Development_Intranet\Site_I_Actually_Care_About将失败,因为整个文件包含在单个 IIS 站点中。我们讨论了编写一个脚本,该脚本递归地遍历目录以删除 FPSE 元数据文件,但存在站点仍然依赖于存储在其中的代码和其他信息的风险。您可以通过以下方式在 Microsoft Expresson 中“解耦”单个文件夹右键单击该网站并选择转换为文件夹

另一个问题是 Expression 始终跟踪发布的完整路径,因此如果我们想将文件从\\IISDEV\WWW\Development_IntranetSite_I_Actually_Care_About\test.html发布到\\IISTEST\WWW\Testing_Intranet\Site_I_Actually_Care_About\test.html,最终实际上会将文件发布到\\IISTEST\WWW\Development_Intranet\Site_I_Actually_Care_About\test.html。在开发服务器中工作然后发布到测试服务器的整个想法仅适用于子站点,只要完整路径相同。

在测试期间,我们的支持工程师和我注意到 Expression 在编辑和操作文件时速度很慢。显然,每次您更改目录、操作站点文件或执行其他操作时,它都会“重新扫描”整个站点目录。听起来它没有保留缓存和/或在您处理站点文件时没有智能更新缓存。无论如何,他说对于我们这样规模的站点(大于 1GB),我们正在突破 Expression 的性能极限,如果它运行缓慢或崩溃,我们不应该感到惊讶。太棒了。

最致命的一点是,Microsoft Expression Studio 在 2010 年就被弃用了,其功能已被纳入 Visual Studio 2012。

相关内容