question-mark
Stuck on an issue?

Lightrun Answers was designed to reduce the constant googling that comes with debugging 3rd party libraries. It collects links to all the places you might be looking at while hunting down a tough bug.

And, if you’re still stuck at the end, we’re happy to hop on a call to see how we can help out.

Bug - Invalid validation errors for Microsoft.Web/sites/config

See original GitHub issue

Hi,

For my project I have an ARM template to deploy an Azure Function. In the template I have a Microsoft.Web/sites/config to set some settings. Unfortunately, ARM Tools marks my template as invalid. The following template shows the validation errors:

{
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {},
    "functions": [],
    "variables": {
        "ipSecurityRestrictions": [
        {
            "ipAddress": "127.0.0.1/32",
            "name": "No place like localhost"
        }],
        "scmIpSecurityRestrictions": [
        {
            "ipAddress": "127.0.0.1/32",
            "name": "No place like localhost"
        }]
    },
    "resources": [{
      "type": "Microsoft.Web/sites/config",
      "name": "test",
      "apiVersion": "2018-11-01",
      "location": "West Europe",
      "tags": {},
      "properties": {
        "numberOfWorkers": 1,
        "defaultDocuments": [
          "Default.htm",
          "Default.html",
          "Default.asp",
          "index.htm",
          "index.html",
          "iisstart.htm",
          "default.aspx",
          "index.php"
        ],
        "copy": [
          {
            "name": "ipSecurityRestrictions",
            "count": "[length(variables('ipSecurityRestrictions'))]",
            "input": {
              "ipAddress": "[variables('ipSecurityRestrictions')[copyIndex('ipSecurityRestrictions')].ipAddress]",
              "name": "[variables('ipSecurityRestrictions')[copyIndex('ipSecurityRestrictions')].name]",
              "priority": "[mul(add(copyIndex('ipSecurityRestrictions'), 1), 100)]"
            }
          },
          {
            "name": "scmIpSecurityRestrictions",
            "count": "[length(variables('scmIpSecurityRestrictions'))]",
            "input": {
              "ipAddress": "[variables('scmIpSecurityRestrictions')[copyIndex('scmIpSecurityRestrictions')].ipAddress]",
              "name": "[variables('scmIpSecurityRestrictions')[copyIndex('scmIpSecurityRestrictions')].name]",
              "priority": "[mul(add(copyIndex('scmIpSecurityRestrictions'), 1), 100)]"
            }
          }
        ],
        "scmIpSecurityRestrictionsUseMain": false,
        "netFrameworkVersion": "v4.6",
        "phpVersion": "5.6",
        "pythonVersion": "",
        "nodeVersion": "",
        "linuxFxVersion": "",
        "logsDirectorySizeLimit": 35,
        "scmType": "None",
        "use32BitWorkerProcess": true,
        "alwaysOn": true,
        "appCommandLine": "",
        "managedPipelineMode": "Integrated",
        "virtualApplications": [
          {
            "virtualPath": "/",
            "physicalPath": "site\\wwwroot",
            "preloadEnabled": true
          }
        ],
        "loadBalancing": "LeastRequests",
        "routingRules": [],
        "experiments": {
          "rampUpRules": []
        },
        "vnetName": "",
        "cors": {
          "allowedOrigins": [
            "https://functions.azure.com",
            "https://functions-staging.azure.com",
            "https://functions-next.azure.com"
          ]
        },
        "minTlsVersion": "1.0"
      },
      "dependsOn": [
        "[resourceId('Microsoft.Web/sites', 'test')]"
      ]
    }],
    "outputs": {}
}

(Code is only to trigger validation errors, for deployment more code is needed.)

In the problems pane I get the following errors:

Value must conform to exactly one of the associated schemas
|   Value must match the regular expression ^.*/appsettings$ at #/resources/0/name
|   Value must be one of the following types: string at #/resources/0/properties/numberOfWorkers
|   Value must be one of the following types: string at #/resources/0/properties/defaultDocuments
|   Value must be one of the following types: string at #/resources/0/properties/copy
|   Value must be one of the following types: string at #/resources/0/properties/scmIpSecurityRestrictionsUseMain
|   Value must be one of the following types: string at #/resources/0/properties/logsDirectorySizeLimit
|   Value must be one of the following types: string at #/resources/0/properties/use32BitWorkerProcess
|   Value must be one of the following types: string at #/resources/0/properties/alwaysOn
|   Value must be one of the following types: string at #/resources/0/properties/virtualApplications
|   Value must be one of the following types: string at #/resources/0/properties/routingRules
|   Value must be one of the following types: string at #/resources/0/properties/experiments
|   Value must be one of the following types: string at #/resources/0/properties/cors
|   or
|   Value must match the regular expression ^.*/authsettings$ at #/resources/0/name
|   or
|   Value must match the regular expression ^.*/azurestorageaccounts$ at #/resources/0/name
|   Value must be one of the following types: object at #/resources/0/properties/numberOfWorkers
|   Value must be one of the following types: object at #/resources/0/properties/defaultDocuments
|   Value must be one of the following types: object at #/resources/0/properties/copy
|   Value must be one of the following types: object at #/resources/0/properties/scmIpSecurityRestrictionsUseMain
|   Value must be one of the following types: object at #/resources/0/properties/netFrameworkVersion
|   Value must be one of the following types: object at #/resources/0/properties/phpVersion
|   Value must be one of the following types: object at #/resources/0/properties/pythonVersion
|   Value must be one of the following types: object at #/resources/0/properties/nodeVersion
|   Value must be one of the following types: object at #/resources/0/properties/linuxFxVersion
|   Value must be one of the following types: object at #/resources/0/properties/logsDirectorySizeLimit
|   Value must be one of the following types: object at #/resources/0/properties/scmType
|   Value must be one of the following types: object at #/resources/0/properties/use32BitWorkerProcess
|   Value must be one of the following types: object at #/resources/0/properties/alwaysOn
|   Value must be one of the following types: object at #/resources/0/properties/appCommandLine
|   Value must be one of the following types: object at #/resources/0/properties/managedPipelineMode
|   Value must be one of the following types: object at #/resources/0/properties/virtualApplications
|   Value must be one of the following types: object at #/resources/0/properties/loadBalancing
|   Value must be one of the following types: object at #/resources/0/properties/routingRules
|   Value must be one of the following types: object at #/resources/0/properties/vnetName
|   Value must be one of the following types: object at #/resources/0/properties/minTlsVersion
|   
|   Error truncated. To find all possible valid values, please see document schema https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#

ARM Tools shouldn’t give any validation error. For instance, numberOfWorkers is in my code an integer, the validation error specifies it as string or object. It is strange that it should be both 😉 .

Besides that, when I look at the template numberOfWorkers is also specified as integer. Following the document schema which links to Microsoft.Web.json numberOfWorkers is also specified as integer.

In this repository the numberOfWorkers is also defined as integer.

Can you fix this? It is annoying that that there are a lot of invalid errors.

Issue Analytics

  • State:open
  • Created 3 years ago
  • Reactions:1
  • Comments:7 (5 by maintainers)

github_iconTop GitHub Comments

1reaction
StephenWeatherfordcommented, Jan 13, 2022

@pmcilreavy Could you add comments directly to https://github.com/Azure/azure-resource-manager-schemas/issues/1542 to help put pressure on them getting this fixed? Thanks!

1reaction
StephenWeatherfordcommented, Mar 8, 2021

@Jeej Thanks for bringing this to our attention. This is a bug in the schema for the websites RP. As soon as they fix it, I can integrate it.

Read more comments on GitHub >

github_iconTop Results From Across the Web

You see validation errors for users in the Office 365 portal or in ...
You (the administrator) receive validation errors in the Office 365 portal or in the Microsoft ... The cause of the issue depends on...
Read more >
Invalid template errors - Azure Resource Manager
Describes how to resolve invalid template errors when deploying Bicep files or Azure Resource Manager templates (ARM templates).
Read more >
Incorrect XML validation error when you add a BAM tracking ...
Symptoms. Consider the following scenario: You use the XML pipeline validator to validate schemas in Microsoft BizTalk Server 2010 or Microsoft BizTalk ...
Read more >
Resolve validation errors - Azure DevOps Services
xml file. Error example. ProcessConfiguration doesn't reference Microsoft.EpicCategory, although it's defined in the Categories.xml definition ...
Read more >
Resolve validation errors - TFS - Microsoft Learn
A data validation error occurs if you define or modify the values for ... Invalid Value, Action Required, You must specify a valid...
Read more >

github_iconTop Related Medium Post

No results found

github_iconTop Related StackOverflow Question

No results found

github_iconTroubleshoot Live Code

Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free

github_iconTop Related Reddit Thread

No results found

github_iconTop Related Hackernoon Post

No results found

github_iconTop Related Tweet

No results found

github_iconTop Related Dev.to Post

No results found

github_iconTop Related Hashnode Post

No results found