因此,我正在设置一个 Jenkins 作业,它将构建和部署我拥有的应用程序。构建它很容易,但我在部署它时遇到了问题。
这是我的构建命令:
"C:\Windows\Microsoft.NET\Framework\v4.0.30319\msbuild.exe" "AppName\AppName.csproj" /T:Build;Package /p:Configuration=DEBUG /p:OutputPath="obj\DEBUG" /p:DeployIisAppPath="/sub.domain.com/AppName" /p:VisualStudioVersion=14.0
sub.domain.com是IIS上的网站名,AppName是其下的应用程序。
现在这里主要是我的部署命令,它不起作用:
"C:\Program Files (x86)\IIS\Microsoft Web Deploy V3\msdeploy.exe" -verb:sync -source:package="AppName\obj\Debug\_PublishedWebsites\AppName_Package\AppName.zip" -dest:auto,computerName="https://webserver:8172/msdeploy.axd",username=jenkins,password=jenkins,authType=basic -allowUntrusted=true
现在,我在 IIS 中设置了一个具有上述凭据的管理员用户,并且该用户对网站和应用程序都具有权限。但是,每当我运行此命令时,我都会收到 ERROR_USER_UNAUTHORIZED 消息。
我需要在部署命令中做哪些更改才能将其部署到 Web 服务器?
谢谢!
答案1
如果您的部署用户不是管理员,则应将其作为管理用户添加到 IIS 站点(假设其名为“my_iis_site”),它应具有足够的站点文件夹文件系统权限(至少可以修改/删除/创建),并且您的部署命令应向处理程序显示您将在此站点范围内执行:
"C:\Program Files (x86)\IIS\Microsoft Web Deploy V3\msdeploy.exe" -verb:sync -source:package="AppName\obj\Debug\_PublishedWebsites\AppName_Package\AppName.zip" -dest:auto,computerName="https://webserver:8172/msdeploy.axd?site=my_iis_site",username=jenkins,password=jenkins,authType=basic -allowUntrusted=true
因此,诀窍是将站点名称作为查询字符串“site=my_iis_site”传递给 msdeploy.axd 处理程序