IIS7 上的 WebDeploy 2.0 组件-驱动器 root 权限

IIS7 上的 WebDeploy 2.0 组件-驱动器 root 权限

我已经在(测试)服务器上安装并配置了 WebDeploy 2.0,以便 WebMatrix 和 Visual Studio 2010 用户可以使用它将他们的应用程序上传到我们的 Windows 2008R2 环境。

这与 WebMatrix 配合得很好,但是我在从 Visual Studio 2010 部署应用程序时遇到了问题。如果我单击发布并使用 WebDeploy 方法,Visual Studio 会报告错误并且不会发布任何内容:

替代文本

因此我打开了 Web 管理服务的失败请求跟踪,然后我看到了以下内容:

替代文本

53 AspNetModuleDiagErrorEvent Uri /MsDeploy.axd eventData 跟踪部署代理异常。请求 ID ''。请求时间戳:'01/22/2011 00:18:54'。错误详细信息:System.UnauthorizedAccessException:拒绝访问路径 'd:\'。
位于 System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath) 位于 System.IO.DriveInfo.get_DriveFormat()

为了方便使用 WebDeploy 功能,授权管理用户被授予对站点 Web 文件夹的完全控制权。本文将介绍这一点:

在 Web 服务器上配置 Web 部署组件

没有提到其他权限。考虑到错误的性质,我尝试授予站点的委托管理用户Read Attribute权限D:\并将其限制为This Folder Only,然后 Visual Studio 2010 便能够立即使用 WebDeploy 发布应用程序。

为什么 Visual Studio 包的行为与服务器上的 WebMatrix 不同?

答案1

这是 Visual Studio 2010 的一个错误,它默认使用错误的程序Microsoft.Web.Deployment集(7.1.0.0)。

为了解决这个问题,需要对 VS 2010 的配置文件进行编辑,以强制它使用8.0.0.0

C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\devenv.exe.config

<dependentAssembly>
  <assemblyIdentity 
     name="Microsoft.Web.Deployment" 
     publicKeyToken="31bf3856ad364e35" 
     culture="neutral"/>
  <bindingRedirect 
     oldVersion="7.1.0.0" 
     newVersion="8.0.0.0"/>
</dependentAssembly>

上面的 xml 片段应该添加到:

/configuration/runTime/assemblyBinding

微软的 PSS 小组已确认了这一点。Visual Studio 2010 SP1 显然将解决这个问题。

显然,您需要在部署计算机上安装 MS WebDeploy 2.0。这可以通过 Web 平台安装程序获得,也可以通过安装 Web Matrix 1.0 RTM 获得,顺便说一下,这样做是正确的。

相关内容