5

In ARM template for Azure Web App, how do you specify the stack settings for the app (.NET, .NET Core, PHP, ...)? I cannot see any field for it.

Thank you

Bertrand Pons
  • 257
  • 2
  • 18

3 Answers3

11

When you create azure webapp on portal, choose Running stack as .Net Core 3.0(Current).

Then click Review+Create > Download a template for automation. You will see the ARM template which contain metadata attribute and the current stack value is dotnetcore.

enter image description here

{
    "apiVersion": "2018-02-01",
    "name": "[parameters('name')]",
    "type": "Microsoft.Web/sites",
    "location": "[parameters('location')]",
    "properties": {
        "name": "[parameters('name')]",
        "siteConfig": {
            "appSettings": [],
            "metadata": [
                {
                    "name": "CURRENT_STACK",
                    "value": "[parameters('currentStack')]"
                }
            ]
        },
        // redacted some values
    }
}
Joey Cai
  • 18,968
  • 1
  • 20
  • 30
  • for .Net Core: `"CURRENT_STACK": { "value": "dotnetcore" }` – user2341923 Apr 07 '20 at 15:02
  • As a small note: This solution does only work for NEW WebApps... if you want to CHANGE an existing WebApp from .NEt to .NEtCore you also must clear "netFrameworkVersion". Otherwise the stack is not changed. – Jochen Kalmbach Oct 02 '20 at 05:07
  • Observation: for .NET 6, the ARM template generated by Azure Portal has `CURRENT_STACK=dotnet`, and not `CURRENT_STACK=dotnetcore` as in .NET Core 3.x. – Paweł Bulwan Sep 29 '22 at 11:15
2

Adding to Joey's answer, the value for CURRENT_STACK for .NET Core would be dotnetcore.

{
            "type": "Microsoft.Web/sites",
            "apiVersion": "2018-11-01",
            "name": "<name>",
            "location": "[resourceGroup().location]",
            "kind": "app",
            "properties": {
                "enabled": true,
                "siteConfig": {
                    "metadata": [
                        {
                            "name": "CURRENT_STACK",
                            "value": "dotnetcore"
                        }
                    ]
                }
            }
        }
El Mac
  • 3,256
  • 7
  • 38
  • 58
1

As a small note: This proposed solution does only work for NEW WebApps... if you want to CHANGE an existing WebApp from .Net4.x to .NetCore you also must clear "netFrameworkVersion". Otherwise the stack is not changed.

So correct would be:

{
    "apiVersion": "2018-02-01",
    "name": "[parameters('name')]",
    "type": "Microsoft.Web/sites",
    "location": "[parameters('location')]",
    "properties": {
        "name": "[parameters('name')]",
        "siteConfig": {
            "appSettings": [],
            "netFrameworkVersion": "",
            "metadata": [
                {
                    "name": "CURRENT_STACK",
                    "value": "dotnetcore"
                }
            ]
        },
        // redacted some values
    }
}
Jochen Kalmbach
  • 3,549
  • 17
  • 18