相关疑难解决方法(0)

如何让TFS2010通过MSBUILD为我运行MSDEPLOY?

Vishal Joshi 提供了一个很好的PDC演讲,它描述了Visual Studio 2010中新的MSDEPLOY功能 - 以及如何在TFS中部署应用程序.(Scott Hanselman 也有很好的演讲,但他没有进入TFS).

您可以使用TFS2010中的MSBUILD来调用MSDEPLOY将您的程序包部署到IIS.这是通过MSBUILD的参数完成的.

该演讲解释了一些命令行参数,例如:

/p:DeployOnBuild
/p:DeployTarget=MsDeployPublish
/p:CreatePackageOnPublish=True
/p:MSDeployPublishMethod=InProc
/p:MSDeployServiceURL=localhost
/p:DeployIISAppPath="Default Web Site"
Run Code Online (Sandbox Code Playgroud)

但是这里的文件在哪里 - 我找不到任何东西?

我一整天都在努力让这个工作起来并且不能完全正确并且最终会遇到各种错误.如果我运行包的cmd文件,它会完美展开.如果我通过Visual Studio运行WebDeploy,它也可以完美运行.

但我想通过msbuild使用这些参数来运行整个部署,而不是单独调用msdeploy或运行包.cmd文件.我怎样才能做到这一点?

PS.是的,我确实有Web Deployment Agent Service跑步.我还在IIS下运行管理服务.我试过用这两个.


我正在使用的Args:

/p:DeployOnBuild=True 
/p:DeployTarget=MsDeployPublish 
/p:Configuration=Release 
/p:CreatePackageOnPublish=True  
/p:DeployIisAppPath=staging.example.com   
/p:MsDeployServiceUrl=https://staging.example.com:8172/msdeploy.axd 
/p:AllowUntrustedCertificate=True
Run Code Online (Sandbox Code Playgroud)

给我 :

C:\ Program Files(x86)\ MSBuild\Microsoft\VisualStudio\v10.0\Web\Microsoft.Web.Publishing.targets(2660):VsMsdeploy失败.(远程代理(URL https://staging.example.com:无法联系8172/msdeploy.axd?site = staging.example.com.确保在目标计算机上安装并启动了远程代理服务.)错误详细信息:远程代理(URL https://staging.example. com:8172/msdeploy.axd?site = staging.example.com)无法联系.确保在目标计算机上安装并启动了远程代理服务.收到了不受支持的回复.响应头'MSDeploy.Response'是''但是'v1'是预期的.远程服务器返回错误:(401)未经授权.

msbuild visual-studio-2010 msdeploy tfs2010

78
推荐指数
4
解决办法
4万
查看次数

如何使用WMSVC服务和NTLM身份验证在Team Build 2010中使用MSDeploy进行部署?

我正在尝试使用Team Build 2010部署到Windows Server 2008 R2 Web服务器.我的构建服务器代理设置为在Windows域帐户下运行.我已使用IIS管理器权限在我的Web服务器上成功授予此域帐户权限以进行部署.此帐户不是 Web服务器上的管理员.我可以使用以下参数使构建部署正常:

/p:DeployOnBuild=True 
/p:DeployTarget=MsDeployPublish 
/p:CreatePackageOnPublish=False 
/p:MSDeployPublishMethod=WMSVC 
/p:AllowUntrustedCertificate=True 
/p:MSDeployServiceUrl=webservername
/p:DeployIisAppPath="Web Site Name"
/p:UserName=DOMAIN\BUILDID
/p:Password=buildidpassword
Run Code Online (Sandbox Code Playgroud)

因为其他开发人员将要设置他们的构建,我宁愿不发布域帐户的密码,我需要使用NTLM身份验证进行部署.我想继续使用Web管理服务方法(WMSVC)进行部署,因此BUILDID不必是管理员.

我深入研究了"Microsoft.Web.Publishing.targets",看来我应该能够传递一个AuthType参数来控制授权类型,但似乎没有任何效果.我试过了:

/p:DeployOnBuild=True 
/p:DeployTarget=MsDeployPublish 
/p:CreatePackageOnPublish=False 
/p:MSDeployPublishMethod=WMSVC 
/p:AllowUntrustedCertificate=True 
/p:MSDeployServiceUrl=webservername
/p:DeployIisAppPath="Web Site Name"
/p:AuthType=NTLM
Run Code Online (Sandbox Code Playgroud)

而且我也尝试了一个空白的用户名(如StackOverflow上的其他地方所见),但无济于事.我继续得到错误:

C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v10.0\Web\Microsoft.Web.Publishing.targets(3847,5):错误:Web部署任务失败.(使用Web管理服务连接到目标计算机("webservername"),但无法授权.请确保您使用的是正确的用户名和密码,即您要连接的站点存在,并且凭据代表有权访问该站点的用户.)

我也尝试过UseMsdeployexe上一个链接中提到的参数,但后来我得到了与web.config转换相关的其他错误.看起来问题已经出现在Microsoft Connect上,并且在下一期中列为已修复.

msbuild tfs team-build msdeploy tfs2010

30
推荐指数
2
解决办法
4143
查看次数

WebDeploy(401)未经授权的错误

在尝试使用不是目标服务器上的本地管理员的Windows用户远程部署应用程序时,我使用NTLM身份验证从MsDeploy收到未经授权的错误.我在目标框上的管理服务委派中设置了规则,并检查了所有提供程序.根据此规则,我添加了2个具有允许权限的用户('*',以及正在进行远程部署的我的Windows用户).此外,我已经在我正在尝试部署的网站上授予了Windows用户权限.如果我将Windows用户设置为目标框上的本地管理员并设置"允许管理员绕过规则",则部署正常.如果Windows用户不是本地管理员,则会收到以下错误:

Web部署任务失败.(无法联系远程代理(URL http:// xxxxxxxx/MSDEPLOYAGENTSERVICE).确保在目标计算机上安装并启动了远程代理服务.)确保站点名称,用户名和密码是正确的.如果问题仍未解决,请与您当地或服务器管理员联系.错误详细信息:无法联系远程代理(URL http:// xxxxx/MSDEPLOYAGENTSERVICE).确保在目标计算机上安装并启动了远程代理服务.收到了不受支持的回复.响应标题'MSDeploy.Response'为'V1',但预计为'v1'.远程服务器返回错误:(401)未经授权.在Microsoft.Web.Publishing.targets(3588,5)

iis msbuild msdeploy webdeploy

29
推荐指数
2
解决办法
4万
查看次数

如何使用集成Windows身份验证使用MSDeploy和TeamCity进行部署?

当我传入用户凭据时,我有一个MSDeploy部署与TeamCity很好地协作.命令行参数(使用某些值的env.变量)是:

MSBuild.exe Web.csproj
/P:Configuration=%env.Configuration%
/ P:DeployOnBuild = True
/ P:DeployTarget = MSDeployPublish
/ P:MsDeployServiceUrl = https://%env.TargetServer%/MsDeploy.axd
/P:AllowUntrustedCertificate = True
/ P:MSDeployPublishMethod = WMsvc
/ P:CreatePackageOnPublish = True
/P:UserName=%env.AdminUser%
/P:Password=%env.AdminPassword%

工作得很好.但现在我想使用集成的身份验证.我尝试使用集成身份验证或只是基本的来自Can MSBuild部署的 Troy建议吗?但它没有做到这一点.我尝试了传递空白用户名和指定的各种组合

/ P:=进行AuthType NTLM

我得到的最接近的是指定/ p:AuthType = NTLM并传入一个空白用户名.但是仍然会导致此错误:

使用Web管理服务连接到目标计算机("[我的目标服务器名称]"),但无法授权.确保您使用的是正确的用户名和密码,您所连接的站点是否存在,以及凭据是否代表具有访问该站点权限的用户.远程服务器返回错误:(401)未经授权

我在本地和远程服务器上都运行Web管理服务.我将两个实例更改为以我认识的用户正确访问该站点的方式运行 - 如果我手动传入凭据,则该用户可以正常工作.

我还尝试在目标站点上手动为该用户提供IIS管理员权限(但不确定为什么这是必要的,因为用户可以在手动传递凭据时发布到站点).

我注意到的一件事是,在WMsvc日志中,它没有记录使用NTLM auth进行尝试的任何用户名.

不知道这里发生了什么.我真的不想在我的TeamCity配置中存储用户凭据.

谢谢.

msbuild teamcity msdeploy msdeployserviceagent

8
推荐指数
2
解决办法
4482
查看次数