Iis

IIS7 上的 WebDeploy 2.0 組件 - 驅動器 root 權限

  • January 31, 2011

我已經在(測試)伺服器上安裝並配置了 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 不同?

這是 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 來獲得,這偶然地做了正確的事情。

引用自:https://serverfault.com/questions/225435