使用Powershell将虚拟目录添加到Azure网站

时间:2014-12-05 22:56:42

标签: powershell azure-web-sites virtual-directory

有没有办法使用Powershell将虚拟目录添加到Azure网站?

背景:我们有一个包含ASP.Net MVC应用程序和Web.API项目的解决方案。我们将应用程序发布到azure网站的根目录中,并将Web.API发布到其下的虚拟目录中。

只要在Azure门户中手动添加虚拟目录,这就可以正常工作。 (由于某种原因,项目设置不会传播到网站设置)。

由于我们希望自动化部署过程,因此我们希望使用Powershell脚本添加缺少的虚拟目录。

3 个答案:

答案 0 :(得分:4)

在这里看起来像一个有效的(如果有点复杂)答案:

缺点是:您必须使用AzureResourceManager并使用Microsoft.web / sites / config对象来获取和设置虚拟目录。

https://social.msdn.microsoft.com/Forums/azure/en-US/990f41fd-f8b6-43a0-b942-cef0308120b2/add-virtual-application-and-directory-to-an-azure-website-using-powershell?forum=windowsazurewebsitespreview

答案 1 :(得分:3)

我最近一直在努力做到这一点,并找到了一个更简单的解决方案here

 $website = Get-AzureRmWebApp -Name "myWebApp" -ResourceGroupName "myResourceGroup" 
 $VDApp = New-Object Microsoft.Azure.Management.WebSites.Models.VirtualApplication 
 $VDApp.VirtualPath = "/TEST" 
 $VDApp.PhysicalPath = "site\\TEST" 
 $VDApp.PreloadEnabled ="YES" 
 $website.siteconfig.VirtualApplications.Add($VDApp) 
 $website | Set-azureRmWebApp 

答案 2 :(得分:0)

基于Ben的回答:

$props = @{
    "virtualApplications" = @(
        @{
            "virtualPath"  = "/";
            "physicalPath" = "site\wwwroot";
        },
        @{
            "virtualPath"  = "/SOME_VIRTUAL_PATH";
            "physicalPath" = "site\wwwroot";
        }
    )
}

Set-AzureRmResource `
    -ResourceGroupName $resourceGroupName `
    -ResourceType "Microsoft.Web/sites/config" `
    -ResourceName "$appServiceName/web" `
    -PropertyObject $props `
    -ApiVersion "2015-08-01" `
    -Force