我使用的项目使用msdeploy将包发布到IIS。它部署在项目的现有版本上。在Web应用程序中,我有一个虚拟目录,但每次部署项目时,虚拟目录都会消失。
我以下列方式调用MSDepoly:
-source:package='d:\[...]\9.1.0.67\application\AppName.zip' -dest:auto,computerName="hostSite.com",userName="AutoInstall",password="****",authtype="NTLM",includeAcls="False" -verb:sync -enableLink:AppPoolExtension -disableLink:ContentExtension -disableLink:CertificateExtension -setParamFile:"d:\...\9.1.0.67\application\AppName.SetParameters.xml" -skip:objectName=binding -skip:absolutePath="info$" -skip:objectName=dirPath,absolutePath="help$",skipAction=Delete
正如你在最后看到的那样,我有以下跳过规则:
-skip:objectName=binding -skip:absolutePath="info$" -skip:objectName=dirPath,absolutePath="help$",skipAction=Delete
绑定跳过规则正在运行,但虚拟目录info仍在从Web应用程序中删除。虚拟目录嵌套在帮助目录中,因此我添加了跳过操作以跳过删除该文件夹。
我根据以下blog article提供了所有这些信息,但我的虚拟目录info仍然在部署时被删除。
请帮忙!
答案 0 :(得分:0)
我放弃让msdeploy玩得很开心。我刚刚编写了一个将在msdeploy完成后执行的bat脚本:
mkdir C:\inetpub\application_wwwroot\VirtualDirectoryPhysicalDir
ECHO adding read permissions to the app pool
cacls C:\inetpub\application_wwwroot\VirtualDirectoryPhysicalDir/t /e /g "IIS APPPOOL\MyAppPool":r
ECHO creating "info" virtual directory
C:\Windows\System32\inetsrv\appcmd add vdir /app.name:"WebApplication/AppVirtualDirectory" / /path:"/help/info" /physicalPath:"C:\inetpub\application_wwwroot\VirtualDirectoryPhysicalDir"
C:\Windows\System32\inetsrv\appcmd set vdir /vdir.name:"Medrio/MedrioWeb/help/info" /physicalPath:"C:\inetpub\application_wwwroot\VirtualDirectoryPhysicalDir"