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 文件夾的完全控制權。本文對此進行了介紹:
沒有提到其他權限。鑑於錯誤的性質,我嘗試授予站點的委派管理使用者
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 來獲得,這偶然地做了正確的事情。