爲了使CMS能夠正常工作,需要將其部署到www根目錄下的虛擬目錄,以便它可以訪問(通過反射)網站進行管理(注意:CMS = N2CMS )。當使用Visual Studio'Publish To Web'時,一切都很好。但是,當我通過msbuild命令行生成包併發布該版本時,我的虛擬目錄被轉換爲虛擬應用程序。MsDeploy虛擬目錄在部署時轉換爲虛擬應用程序
我將遠程服務器配置爲在我的IIS Web應用程序('exampleapp')下有一個虛擬目錄'/ n2',並在Package/Publish Web設置中配置了此路徑(IIS網站/應用程序名稱目標服務器)在我的Visual Studio項目中。
要生成部署包:
msbuild.exe myproject.csproj /T:Package
這與MsDeploy命令行批處理文件執行(標準的msbuild/msdeploy靶)一起產生的我的代碼壓縮包。
生成SetParameters.xml包含以下內容:
<?xml version="1.0" encoding="utf-8"?>
<parameters>
<setParameter name="IIS Web Application Name" value="exampleapp/n2" />
</parameters>
生成SourceManifest.xml包含以下
<?xml version="1.0" encoding="utf-8"?>
<sitemanifest>
<IisApp path="C:\...shortened-path...\PackageTmp" managedRuntimeVersion="v4.0" />
<setAcl path="C:\...shortened-path...\PackageTmp" setAclResourceType="Directory" />
<setAcl path="C:\...shortened-path...\PackageTmp" setAclUser="anonymousAuthenticationUser" setAclResourceType="Directory" />
</sitemanifest>
任何人有一個線索,爲什麼虛擬目錄被轉化爲虛擬應用?
嗯設置DeployAsIisApp爲false時,它似乎工作,但現在MsDeploy沒有「得到」指定的部署目錄實際上是駐留在別處的虛擬目錄。 ( 錯誤:當'setAcl'提供程序與物理路徑一起使用時,必須指定'setAclUser'設置的值 )。 – 2012-02-21 09:09:43
我也看到< IncludeSetAclProviderOnDestination Condition =「'(IncludeSetAclProviderOnDestination)'==''」> True </IncludeSetAclProviderOnDestination >在目標文件中,所以我猜你可以關閉它。 – tdykstra 2012-02-22 22:37:01
在我的.csproj中將IncludeSetAclProviderOnDestination設置爲false時,錯誤消失了。但是,錯誤似乎源於這樣的事實:默認情況下,將DeployAsIisApp設置爲False時,SetParameters.xml中的「IIS Web應用程序名稱」後綴(本地)文件路徑(服務器上不存在該文件路徑)。將其更正爲服務器路徑解決了問題(使用IncludeSetAclProviderOnDestination = False)。 – 2012-02-27 10:29:56