C# Webdeploy权限问题

C# Webdeploy权限问题,c#,msbuild,msdeploy,webdeploy,C#,Msbuild,Msdeploy,Webdeploy,我有3个web部署(visualstudio发布项目到包)包,我使用msdeploy命令与服务器同步。其中一个包是新添加的。除了新添加的包外,其他两个包都可以正常工作。我在日志中看到以下错误。我不确定在何处设置此权限,因为iisApp提供程序的权限已在IIS管理器委派设置中设置。我不熟悉IIS配置和.net开发。有人能提供我为什么会出现这个错误的信息吗 以下是使用的命令: PS D:\Deployment> &'C:\Program Files\IIS\Microsoft Web

我有3个web部署(visualstudio发布项目到包)包,我使用msdeploy命令与服务器同步。其中一个包是新添加的。除了新添加的包外,其他两个包都可以正常工作。我在日志中看到以下错误。我不确定在何处设置此权限,因为iisApp提供程序的权限已在IIS管理器委派设置中设置。我不熟悉IIS配置和.net开发。有人能提供我为什么会出现这个错误的信息吗

以下是使用的命令:

PS D:\Deployment> &'C:\Program Files\IIS\Microsoft Web Deploy V3\msdeploy.exe'  -verb:sync -source:package='D:\temp\CI.Web.Pack_20130824.1\_PublishedWebsites\ProjectXYZ_Package\
ProjectXYZ.zip' -dest="auto,computerName='https://localhost:8172/msdeploy.axd?site=siteName',username
='deployUserName',password='deployPassword',authType=basic,includeAcls='False'" -skip:objectName=createApp -disableLink:AppPoolExtens
ion -disableLink:ContentExtension -disableLink:CertificateExtension -allowUntrusted
Info: Using ID '2b0c6151-a2b0-4a87-9135-263330c5e619' for connections to the remote server.
Info: Object createApp (D:\Builds\2\Mayo.KCMS\CI.Web.Pack\Sources\DEV\Web\ProjectXYZ\obj\Rele
ase\Package\PackageTmp) skipped due to skip directive 'CommandLineSkipDirective 1'.
Info: Adding sitemanifest (sitemanifest).
Info: Adding IIS Application (Default Web Site/ProjectXYZ_deploy)
Error Code: ERROR_USER_NOT_AUTHORIZED_FOR_IISAPP
More Information: Could not complete an operation with the specified provider ("iisApp") when connecting using the Web M
anagement Service. This can occur if the server administrator has not authorized the user for this operation. iisApp htt
p://go.microsoft.com/fwlink/?LinkId=178034  Learn more at: http://go.microsoft.com/fwlink/?LinkId=221672#ERROR_USER_NOT_
AUTHORIZED_FOR_IISAPP.
Error count: 1.
服务器上的错误:

wmsvc.exe Error: 0 : User: 
Client IP: ::1
Content-Type: application/msdeploy
Version: 9.0.0.0
MSDeploy.VersionMin: 7.1.600.0
MSDeploy.VersionMax: 9.0.1631.0
MSDeploy.Method: Sync
MSDeploy.RequestId: 6b694745-0024-416c-9439-3e97608417b9
MSDeploy.RequestCulture: en-US
MSDeploy.RequestUICulture: en-US
ServerVersion: 9.0.1631.0
Skip: objectName="^configProtectedData$"objectName="createApp"
Provider: auto, Path: 
A tracing deployment agent exception occurred that was propagated to the client. Request ID '6b694745-0024-416c-9439-3e97608417b9'. Request Timestamp: '8/26/2013 2:01:55 PM'. Error Details:
ERROR_USER_NOT_AUTHORIZED_FOR_IISAPP
Microsoft.Web.Deployment.DeploymentDetailedUnauthorizedAccessException: Could not complete an operation with the specified provider ("iisApp") when connecting using the Web Management Service. This can occur if the server administrator has not authorized the user for this operation. iisApp http://go.microsoft.com/fwlink/?LinkId=178034  Learn more at: http://go.microsoft.com/fwlink/?LinkId=221672#ERROR_USER_NOT_AUTHORIZED_FOR_IISAPP.
   at Microsoft.Web.Deployment.DelegationHelper.ImpersonateForOperation(String deploymentAction, String deploymentProvider, String deploymentPath, DelegationContextCache cache)
   at Microsoft.Web.Deployment.DelegationHelper.ImpersonateForOperation(String deploymentAction, DeploymentObject deploymentObject)
   at Microsoft.Web.Deployment.DeploymentObject.Add(DeploymentObject source, DeploymentSyncContext syncContext)
   at Microsoft.Web.Deployment.DeploymentSyncContext.HandleAdd(DeploymentObject destObject, DeploymentObject sourceObject)
   at Microsoft.Web.Deployment.DeploymentSyncContext.SyncChildren(DeploymentObject dest, DeploymentObject source)
   at Microsoft.Web.Deployment.DeploymentSyncContext.SyncChildrenOrder(DeploymentObject dest, DeploymentObject source)
   at Microsoft.Web.Deployment.DeploymentSyncContext.ProcessSync(DeploymentObject destinationObject, DeploymentObject sourceObject)
   at Microsoft.Web.Deployment.DeploymentObject.SyncToInternal(DeploymentObject destObject, DeploymentSyncOptions syncOptions, PayloadTable payloadTable, ContentRootTable contentRootTable, Nullable`1 syncPassId)
   at Microsoft.Web.Deployment.DeploymentAgent.HandleSync(DeploymentAgentAsyncData asyncData, Nullable`1 passId)
   at Microsoft.Web.Deployment.DeploymentAgent.HandleRequestWorker(DeploymentAgentAsyncData asyncData)
   at Microsoft.Web.Deployment.DeploymentAgent.HandleRequest(DeploymentAgentAsyncData asyncData)

除非用户是管理员,否则您需要授予他们部署到网站的权限。您可以通过右键单击IIS管理器中的网站并选择
Deploy::Configure Web Deploy Publishing
来执行此操作。只需选择用户并单击“确定”(您可以删除它在桌面上生成的发布设置文件)

我找到了解决问题的方法。第三个包试图在服务器上创建新的应用程序,因为与其他两个包不同的应用程序名。我添加了一个新的setParameters.xml文件,其中包含应用程序名条目,该条目将用前两个包部署到的应用程序名覆盖默认应用程序名。我将此setParameters.xml文件作为参数传递给Webdeploy命令

&'C:\Program Files\IIS\Microsoft Web Deploy V3\msdeploy.exe'  -verb:sync -source:package='D:\temp\Project_XYZ.zip' -setParamFile:setParameters.xml -dest="auto,computerName='https://localhost:8172/msdeploy.axd?site=siteName',username='deployUser',password='changeMe',authType=basic,includeAcls='False'" -skip:objectName=createApp -disableLink:AppPoolExtension -disableLink:ContentExtension -disableLink:CertificateExtension -allowUntrusted -whatif
setParameters.xml

<?xml version="1.0" encoding="utf-8"?>
<parameters>
  <setParameter name="IIS Web Application Name" value="siteName" />
</parameters>

我通过卸载然后重新安装WebDeploy(都是通过运行WebDeploy安装程序)解决了这个问题

请参阅此问题及其答案,了解相同或至少相似的问题:


    • 当我转到非管理员部署时,我遇到了这个问题。这是在获得“ERROR\u USER\u NOT\u AUTHORIZED\u FOR\u IISAPP”错误后的有效命令行。这样就不需要通过使用-setParam引用外部setParams.xml

      遗憾的是,正是setParams和computername字符串中对“sitename”的双重引用使这一点得以实现。我试图消除一个或另一个,但我总是会得到“错误用户未授权”错误

      `"c:\program files\iis\microsoft web deploy v3\msdeploy"  -verb:sync -setParam:'IIS Web Application Name'='sitename' -source:package="package.zip" -dest:auto,computerName='https://machinename:8172/msdeploy.axd?site=sitename',username=username,password=password, -allowUntrusted=true`
      

      谢谢Rich!我已经找到了解决我做错了什么的办法。我在setParameters.xml文件中设置了一个错误的应用程序名称。感谢您发布您的问题和解决方案,现在是2019年,我遇到了相同的错误。我试图使用VST设置到Arvixe(web主机)的持续集成部署,但得到了相同的错误;事实证明,我没有像你所说的那样正确设置应用程序名称。在我的发布过程中添加了一个步骤来修复setParameters.xml文件后,我现在可以使用CI直接推送到我的Arvixe和GoDaddy站点。这为我解决了问题,请注意,也可以从命令行执行此操作,例如:
      msdeploy.exe-setParam:name=“IIS Web应用程序名称”,value=“”