Repository navigation
[webapp] az webapp create ignores siteConfigPropertiesDictionary from the selected App Service stack #10175
Description
Activity
x-engineering-agent commented
on Aug 3, 2026 AuthorMore actionsBug Analysis
Root Cause
az webapp create --runtimeresolves the selected runtime stack from the App Service stacks API but does not merge the stack'ssiteConfigPropertiesDictionaryinto thesiteConfigsent in the ARM PUT request.For Windows Node 24, the stacks API returns:
{"siteConfigPropertiesDictionary": {"use32BitWorkerProcess": false}}But the create payload only includes
appSettings(e.g.WEBSITE_NODE_DEFAULT_VERSION=~24) andCURRENT_STACK=nodemetadata — never theuse32BitWorkerProcess: falsethe stack requires. The resulting app is configured withuse32BitWorkerProcess: true, causing HTTP 500 for a 64-bit-only runtime.Fix Required
In the
webappextension'saz webapp createhandler:- After resolving the runtime stack entry via the stacks API, check if the entry contains a
siteConfigPropertiesDictionary. - Merge all valid
SiteConfigproperties from that dictionary into thesiteConfigblock of the ARM PUT request body. - Do not hard-code OS, runtime name, or version — use the dictionary generically.
- Preserve existing defaults when the dictionary or a property is absent.
- Give explicit caller-supplied values precedence over dictionary values if the same
siteConfigproperty is also anaz webapp createparameter.
Relevant code is likely in
src/webapp/azext_webapp/custom.pyor_params.pyin thecreate_webappfunction wheresiteConfigis built before the ARM call.Tests
Add regression tests that verify:
- Windows Node 24 create results in
use32BitWorkerProcess == false - A stack without
siteConfigPropertiesDictionaryretains existing behavior - Any valid
SiteConfigproperty in the dictionary is applied generically
Environment
- azure-cli 2.88.0, Windows 11, Python 3.14.5
- Reproduced on Windows P0v3 App Service plan in East US 2
Use this EXACT PR title:
[Webapp] Fix #10175:az webapp create: apply siteConfigPropertiesDictionary from stacks API to siteConfig on createPR title & description format (required)
This repo enforces a PR format (guide). Please author the PR exactly as follows or CI's Check the Format of Pull Request Title and Content will fail.
Use this EXACT PR title (copy verbatim, do not reword):
[Webapp] Fix #10175: `az webapp create`: apply siteConfigPropertiesDictionary from stacks API to siteConfig on createKeep the backticks around the command and the
Fix #10175:prefix. You may only adjust the wording after the command (the final summary) if the fix changes; the[Webapp]prefix, issue link, and backticked command must stay.Description — follow the PR template and fill in:
- Link the issue — start the Description with a closing keyword so the PR auto-links and closes it:
Fixes #10175. - Related command — the
az ...command this affects. - Description (mandatory) — why the bug happens, what you changed, and the resulting behavior.
- Testing Guide — example command(s) showing the fix works.
- History Notes — leave the title to drive the history note, or add extra lines in the same format (component in brackets + the command in backticks), e.g.
[Webapp] `az <command>`: <note>. - Keep the template checklist and tick the items you've satisfied.
Posted by agent-assist (autonomous bug-fix pipeline).
- After resolving the runtime stack entry via the stacks API, check if the entry contains a
Thank you for opening this issue, we will look into it.
- linked a pull request that will close this issueRoute webapp create stack configuration fix to Azure CLI core #10176
on Aug 3, 2026 - addedquestionThe issue doesn't require a change to the product in order to be resolved. Most issues start as thatThe issue doesn't require a change to the product in order to be resolved. Most issues start as thatcustomer-reportedIssues that are reported by GitHub users external to the Azure organization.Issues that are reported by GitHub users external to the Azure organization.Service AttentionThis issue is responsible by Azure service team.This issue is responsible by Azure service team.Auto-AssignAuto assign by botAuto assign by bot
on Aug 3, 2026
Source: Azure/azure-cli#33835 (by Byron Tardif (@btardif))
Affected extension:
webapp(src/webapp/)<<UNTRUSTED:issue-33835>>
Issue #33835 (by Byron Tardif (@btardif))
Title
az webapp create ignores siteConfigPropertiesDictionary from the selected App Service stack
Body
Describe the bug
az webapp create --runtimeresolves the selected runtime but does not apply the stack-specific site configuration supplied by the App Service stacks API insiteConfigPropertiesDictionary.The current observable failure is Windows Node 24. Its stack metadata includes:
''' json
{
"siteConfigPropertiesDictionary": {
"use32BitWorkerProcess": false
}
}
'''
Node 24 is 64-bit only, but an app created with
--runtime "NODE:24LTS"hasuse32BitWorkerProcess: true. A Node 24 probe then fails with HTTP 500. Changing only this property tofalseallows the same probe to run successfully as Node 24 x64.This should not be fixed with a Node 24-specific or Windows-only condition. The stacks API is the source of truth for runtime-specific site configuration on both Windows and Linux. Upcoming runtimes, including .NET 11 on Windows, will also require
use32BitWorkerProcess: false, while Linux stacks may use the dictionary for other platform-appropriate settings. Every consumer of the stacks API should honor these properties generically so that adding or changing a stack does not require another Azure CLI release or runtime-specific branch.Related command
''' text
az webapp create
'''
Related inspection and workaround commands:
''' text
az webapp list-runtimes
az webapp config show
az webapp config set --use-32bit-worker-process false
'''
Errors
The create command succeeds, but the resulting app is configured incorrectly:
''' json
{
"nodeVersion": "",
"use32BitWorkerProcess": true,
"windowsFxVersion": null
}
'''
After deploying a no-dependency Node probe:
''' text
GET https://.azurewebsites.net/
HTTP 500
'''
The identical probe on an otherwise identical app where only
use32BitWorkerProcessis set tofalsereturns:''' json
{
"nodeVersion": "v24.18.0",
"architecture": "x64",
"platform": "win32"
}
'''
Issue script & Debug output
The following reproduces the configuration defect on a currently selected subscription. App names must be globally unique.
''' powershell
$location = "eastus2"
$resourceGroup = "node24-cli-repro"
$planName = "node24-cli-repro-plan"
$appName = "node24-cli-repro-"
az group create
--name $resourceGroup--location $location
az appservice plan create
--resource-group $resourceGroup--name $planName
--location $location--sku P0v3 `
--is-linux false
az webapp list-runtimes
--os-type windows--query "[?config=='NODE|24LTS']"
az webapp create
--resource-group $resourceGroup--plan $planName
--name $appName--runtime "NODE:24LTS" `
--debug
az webapp config show
--resource-group $resourceGroup--name $appName `
--query "{nodeVersion:nodeVersion, windowsFxVersion:windowsFxVersion, use32BitWorkerProcess:use32BitWorkerProcess}"
'''
Runtime discovery correctly returns Node 24:
''' json
[
{
"config": "NODE|24LTS",
"os": "Windows",
"runtime": "Node",
"version": "24.0 LTS"
}
]
'''
Relevant sanitized
--debugoutput:''' text
Will set appsetting {'name': 'WEBSITE_NODE_DEFAULT_VERSION', 'value': '~24'}
PUT .../providers/Microsoft.Web/sites/?api-version=2025-05-01
Request body:
{
"properties": {
"siteConfig": {
"appSettings": [
{
"name": "WEBSITE_NODE_DEFAULT_VERSION",
"value": "~24"
}
],
"alwaysOn": true
},
"serverFarmId": ""
}
}
PUT .../providers/Microsoft.Web/sites//config/metadata?api-version=2025-05-01
Request body:
{
"properties": {
"CURRENT_STACK": "node"
}
}
'''
Neither request applies
use32BitWorkerProcess: false. The resulting value istrue:''' json
{
"nodeVersion": "",
"use32BitWorkerProcess": true,
"windowsFxVersion": null
}
'''
The workaround is:
''' powershell
az webapp config set
--resource-group $resourceGroup--name $appName `
--use-32bit-worker-process false
'''
Expected behavior
When
--runtimeselects a Windows or Linux stack whose stacks API entry containssiteConfigPropertiesDictionary,az webapp createshould merge those properties into thesiteConfigsent to ARM.For Windows Node 24, the initial create payload should therefore include:
''' json
{
"properties": {
"siteConfig": {
"use32BitWorkerProcess": false
}
}
}
'''
The implementation should be generalized:
siteConfigPropertiesDictionaryentries to the create payload using the SiteConfig schema.NODE|24LTS, or .NET 11.az webapp createsupports an override for the same property.Regression coverage should verify that:
use32BitWorkerProcess == falseand can run an x64 probe.Environment Summary
''' text
azure-cli 2.88.0
azure-cli-core 2.88.0
azure-cli-telemetry 1.1.0
Python (Windows) 3.14.5
OS Windows 11
'''
The issue was reproduced on a Windows P0v3 App Service plan in East US 2. The plan reported
kind: appandreserved: false.Additional context
The CLI correctly maps
NODE|24LTStoWEBSITE_NODE_DEFAULT_VERSION=~24and writesCURRENT_STACK=node; the missing behavior is propagation of the selected stack's site configuration metadata.The observed side-by-side test used the same plan and identical deployment package:
use32BitWorkerProcessaz webapp create --runtime "NODE:24LTS"with no post-create changetrueaz webapp config set --use-32bit-worker-process falsefalsev24.18.0,x64,win32The generalized, OS-independent stacks metadata behavior is the requested fix. A Node 24-only or Windows-only workaround in
az webapp createwould leave the same defect for .NET 11, Linux stacks, and other future runtime requirements.Comments
Comment by Yong Zhang (@yonzhan)
Thank you for opening this issue, we will look into it.
<<END:issue-33835>>