Visual Studio发布到IIS及Web Deploy配置部署 - anech

Visual Studio发布到IIS及Web Deploy配置部署 - anech

💡 原文中文,约2000字,阅读约需5分钟。
📝

内容提要

本文介绍 Visual Studio 通过 IIS 发布配置:先给出官方教程,再说明错误排查,包括检查服务器、网站名、用户名、密码(尤其网站名),为 IIS 账号授予站点文件夹 Users 完全控制权限,放行 8172 端口及防火墙安全组,并用 net start 检查 wmsvc 和 msdepsvc 服务。最后列出 IISProfile.pubxml 常用配置,如环境名、不受信任证书、禁用 setACL,以及过滤、跳过和包含文件的规则。

🔎

延伸解读

常见发布错误排查要点

文章指出,发布请求不通时,应优先检查配置中的服务器地址、网站名、用户名和密码,尤其是网站名容易出错。若使用IIS账号,需确保站点文件夹的Users用户组拥有完全控制权限。此外,还需确认防火墙和安全组已放行8172端口,并检查wmsvc和msdepsvc服务是否通过net start正常启动。这些步骤能解决大部分Web Deploy连接问题。

IISProfile.pubxml关键配置解析

在IISProfile.pubxml中,可设置EnvironmentName指定环境,AllowUntrustedCertificate允许使用不受信任证书发布,IncludeSetACLProviderOnDestination禁用默认setACL行为。这些属性影响发布时的环境标识、证书验证和权限设置,需根据实际部署环境调整。

文件过滤与包含规则

通过Content Update和CopyToPublishDirectory="Never"可过滤文件,并从部署站点删除目标;MsDeploySkipRules则跳过文件或目录,但不会从部署站点删除。ResolvedFileToPublish可将项目外文件复制到部署站点,并可用CopyToPublishDirectory覆盖默认行为。合理使用这些规则能精确控制发布内容。

❓

Q&A

Visual Studio 发布到 IIS 时请求不通,应该检查哪些配置项?

检查配置项里的服务器、网站名、用户名、密码是否有误,特别是网站名,作者遇到的基本都是这个问题。

使用 IIS 账号发布时,站点文件夹权限如何设置?

请检查站点文件夹的 Users 用户组是否开通完全控制权限。

Web Deploy 需要放行哪个端口?如何检查相关服务是否启动?

需要放行 8172 端口,并检查 IP 端口是否加入防火墙及安全组。检查服务是否正常启动可运行:net start wmsvc & net start msdepsvc。

IISProfile.pubxml 中如何设置环境名称和允许不受信任的证书?

在 PropertyGroup 中设置 <EnvironmentName>Staging</EnvironmentName> 和 <AllowUntrustedCertificate>True</AllowUntrustedCertificate>。

在 IISProfile.pubxml 中如何过滤文件或目录,使其不被部署?

使用 <Content Update="路径" CopyToPublishDirectory="Never" /> 过滤文件(会从部署站点删除目标);使用 <MsDeploySkipRules> 过滤目录或文件(不会从部署站点删除目标),例如:<MsDeploySkipRules Include="CustomSkipFolder"><ObjectName>dirPath</ObjectName><AbsolutePath>wwwroot\content</AbsolutePath></MsDeploySkipRules>。

如何将项目之外的文件包含到部署站点?

使用 <ResolvedFileToPublish Include="..\ReadMe2.md"><RelativePath>wwwroot\ReadMe2.md</RelativePath></ResolvedFileToPublish>,可通过 <CopyToPublishDirectory> 覆盖默认行为(如 PreserveNewest)。

🏷️

标签

➡️

继续阅读