如何使用 Web 部署将 .NET 应用程序发布到服务器上的特定文件夹(子目录)?

Posted

技术标签:

【中文标题】如何使用 Web 部署将 .NET 应用程序发布到服务器上的特定文件夹(子目录)?【英文标题】:How do you publish an .NET app using Web Deploy to a specific folder on the server (subdirectory)? 【发布时间】:2022-01-15 11:08:33 【问题描述】:

我目前有一个网站和几个网络应用程序,这些应用程序是从其他人那里交给我的。 Web 应用程序是网站的子目录(因此最终 URL 将是 www.mywebsite.com/app1)。我们刚刚在我们的新服务器上启动并运行了新网站,虽然子目录在那里,但其中的应用程序不起作用,所以我需要将应用程序重新发布到这些子目录(进行了一些编辑)。但是,当我尝试发布时,所有文件夹和文件都发布在根目录下,而不是它们所属的子目录下(并且我收到内部服务器错误 500.19,因为它不喜欢它现在正在读取的应用程序的 web.config 文件-另一个问题)。所以,我有两个问题,我在 .NET Framework 4.8 应用上使用 Visual Studio 2019 中的 Web Deploy 方法:

    我如何确保在发布时找到正确的发布文件夹?

    我知道我需要将 IIS 管理器中的文件夹“转换为应用程序”。我是在将应用发布到该文件夹​​之前还是之后这样做?

目前,我的根目录是这样的,这是我发布后需要的结果。 FocalAreas、Inventory 和 NatiVeg 都是自包含的 .NET 应用程序,具有自己的 Global.asax 文件、web.config 文件、packages.config 文件等。

我是否需要在发布配置文件中进行设置以指向正确的发布文件夹?我没有看到太多我可以在那里配置以进行 Web 部署。我查看了一堆 *** 问题和 youtube 视频,但我找不到任何关于通过网络部署在子目录中发布应用程序的基本工作流程。在他们已经发布到他们的子文件夹之后,他们中的大多数人正在与 IIS 管理器方面进行交流。在阅读各种帖子时,我确实看到还有“添加虚拟目录”;这是我在转换为应用程序之前需要做的事情吗? TIA。

【问题讨论】:

“我找不到任何关于通过网络部署在子目录中发布应用程序的基本工作流程。”这是正确的。 Web Deploy 旨在将 IIS 上的站点从一台机器复制到另一台机器,因此它的包或发布配置文件同时关注 IIS 配置和 Web 内容。如果您只想复制文件,robocopy 等实用程序更适合。 【参考方案1】:

结果证明这是一个非常简单的修复:

假设我有一个名为 DogsAreAwesome 的网站和一个我想要包含我的名为 Doberman 的应用程序的文件夹。

    在 IIS 管理器中,将您要发布到的***站点 (DogsAreAwesome) 下的 Doberman 文件夹转换为应用程序。右键单击 Doberman 文件夹 > 转换为应用程序。

    在 Visual Studio 中设置您的发布配置文件以指向您刚刚设置的新 Doberman 应用。这是我缺少的部分。在连接对话框中显示“站点名称”的地方,不仅要输入***站点名称(DogsAreAwesome),还要输入您在步骤 1 中转换为应用程序的文件夹(Doberman): DogsAreAwesome/Doberman

现在,当您使用 web deploy 发布时,它应该将您的应用程序文件发布到该 Doberman 文件夹(现在是一个应用程序),而不是整个 DogsAreAwesome 网站。

【讨论】:

以上是关于如何使用 Web 部署将 .NET 应用程序发布到服务器上的特定文件夹(子目录)?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Visual Studio 2012 Express 将 ASP.NET MVC 4 应用程序部署到 Web 托管提供商子目录?

通过 Azure Devops 将 .Net Core 3.1 Web 应用程序部署到 Azure Linux Web 服务时出错

使用弹性 beantalk 问题部署 Asp.net Web 应用程序

将 ASP.NET MVC 应用程序发布到 Web 主机 - 在 VS 项目结构中而不是应用程序中部署文件

将 asp.net core web api 部署到 aws elastic beanstalk 时出现错误 404

将 ASP.NET 应用程序部署到 Azure Web 应用程序时出现 HTTP 403 错误