首页 > 解决方案 > .Net Core 2 WebApp 从包 (zip) 发布到 iis

问题描述

我已经完成的先决条件:

通过模板“ASP.NET Core Web Application”(选择 ASP.NET NetCore 2.1)创建了简单的 Web API 项目。使用下一个配置创建了发布配置文件

<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<WebPublishMethod>Package</WebPublishMethod>
<PublishProvider>FileSystem</PublishProvider>
<LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration>
<LastUsedPlatform>Any CPU</LastUsedPlatform>
<SiteUrlToLaunchAfterPublish />
<LaunchSiteAfterPublish>True</LaunchSiteAfterPublish>
<ExcludeApp_Data>False</ExcludeApp_Data>
<ProjectGuid>ca211ccb-1868-47d8-a6nd-c30347faa49e</ProjectGuid>
<DeleteExistingFiles>False</DeleteExistingFiles>
<PackageLocation>C:\Test\Publish\CoreWebApi.zip</PackageLocation>
<DeployIisAppPath>Default Web Site/WebEngine555</DeployIisAppPath>    
</PropertyGroup>
</Project>

这有助于生成一个 zip 包。

将此包部署到 IIS 后,(我已使用下一个命令完成)

C:\Program Files (x86)\IIS\Microsoft Web Deploy V3>msdeploy.exe -verb:sync -source:package="C:\Test\Publish\CoreWebApi.zip" -dest:auto="C:\inetpub\wwwroot\WebEngine" 

它将包安装到“C:\inetpub\wwwroot”根目录(默认网站,并从中删除所有其他内容)。

是否可以通过 .pubxml 文件在 MSBuild 配置步骤中将安装路径(虚拟路径)指向根文件夹而不是至少在子文件夹中?我能够通过运行来做到这一点

C:\Program Files (x86)\IIS\Microsoft Web Deploy V3>msdeploy.exe -verb:sync -source:package="C:\Test\Publish\CoreWebApi.zip" 
-dest:auto="Default Web Site/WebEngine" 
-setParam:name="IIS Web Application Name",
value="Default Web Site/WebEngine5"

同样在这里Msdeploy replace 属性 找到了一个很好的答案,但它仅适用于简单的新 Web API。当我尝试对现有项目执行相同操作时,它始终使用 '..\obj\Release\netcoreapp2.1\PubTmp\Out\' 文件夹作为同步目标,根本不会将文件复制到 IIS 文件夹。使用上面的参数,它只是不复制任何东西

应该影响它的参数是什么?一些目标似乎在​​新管道中被忽略了。我做了很多实验,我认为最有用的链接是blogsdkofficial,但仍然找不到在部署时选择发布文件夹的方法。

标签: c#msbuildasp.net-core-2.0iis-8

解决方案


推荐阅读