azure 从Node.js创建WebApp资源时“参数LinuxFxVersion具有无效值”

esyap4oy  于 2023-02-13  发布在  Node.js
关注(0)|答案(4)|浏览(126)

我尝试在Node.js环境中使用Azure SDK for JS创建一个简单的WebApp,但我一直得到响应:

{
  "Code":"BadRequest",
  "Message":"The parameter LinuxFxVersion has an invalid value.",
  "Target":null,
  "Details":[
    {"Message":"The parameter LinuxFxVersion has an invalid value."},
    {"Code":"BadRequest"},
    {"ErrorEntity": {
        "ExtendedCode":"01007",
        "MessageTemplate":"The parameter {0} has an invalid value.",
        "Parameters":["LinuxFxVersion"],
        "Code":"BadRequest",
        "Message":"The parameter LinuxFxVersion has an invalid value."}
    }],
  "Innererror":null
}

我尝试了各种不同的属性和环境,但都没有成功。我总是得到这个错误。下面是我正在使用的TypeScript代码的一个片段:

const wsmClient: WebSiteManagementClient...
    const webAppName: string...
    const servicePlanId: string...
    const rgName: string...
    const envelope: Site = {
      name: webAppName,
      location: 'westus2',
      kind: 'app,linux',
      serverFarmId: servicePlanId,
      siteConfig: {
        linuxFxVersion: 'JAVA|11-java11'
      }
    };
    const appResp = await wsmClient.webApps.createOrUpdate(
      rgName,
      webAppName,
      envelope
    );

我哪里做错了?

unhi4e5o

unhi4e5o1#

    • 原因**:

您的应用服务计划不是Linux,实际上是Windows。Windows主机没有参数LinuxFxVersion。
如果我们创建站点时没有将主机显式配置为Linux,则默认情况下将是Windows主机/服务器场/应用程序服务计划。使用{" kind ":" linux "}是不够的。

    • 溶液**:

在Linux中明确定义应用服务计划,并确保{"reserved": true}将其设置为Linux主机(参见文档)

{
    "type": "Microsoft.Web/serverfarms",
    "apiVersion": "2019-08-01",
    "name": "[parameters('hostingPlanName')]",
    "location": "[parameters('location')]",
    "kind": "app,linux",
    "properties": {
        "reserved": true
    },
    "sku": {
        "Tier": "[parameters('hostingPlanSkuTier')]",
        "Name": "[parameters('hostingPlanSkuName')]"
    }
}
yiytaume

yiytaume2#

我测试了你的json数据,它导致了你的properties。你的json数据没有“properties”属性。如果你想使用json属性创建Web,请检查此Web应用Rest API请求主体:Web应用-创建或更新。
正确的格式应类似于以下示例:

{
    "location": "CentralUS",
    "kind":"app,linux",
    "properties":{
          "serverFarmId":"your Resource ID",
        "siteConfig":{
            "linuxFxVersion":"JAVA|11-java11"
        }
    }

 }
xtfmy6hx

xtfmy6hx3#

@imwenyz回答帮了我。
我正在作为Azure DevOps管道运行,它有AzureWebApp@1任务。我在Azure上配置的应用服务是基于Windows的。
我在此任务中遇到如下错误。

##[error]Error: Failed to patch App Service 'BasicReactApp' configuration. Error: BadRequest - The parameter LinuxFxVersion has an invalid value. (CODE: 400)

因此,我不得不对任务进行如下修改。

- task: AzureWebApp@1
        displayName: 'Azure Web App Deploy: '
        inputs:
          azureSubscription: $(azureSubscription)
          #appType: webAppLinux # this is the cause for the error in my case.
          appType: webApp
          appName: $(webAppName)
          runtimeStack: 'NODE|14.x'
          package: $(Pipeline.Workspace)/drop/$(Build.BuildId).zip
          startUpCommand: 'npm run start'

基本上,如您所见,将appType从webAppLinux更改为webApp

qnakjoqk

qnakjoqk4#

我在使用Terraform部署Web应用程序时遇到了类似的问题。

resource "azurerm_linux_web_app" "app_service" {
  name                = "app-name"
  location            = azurerm_resource_group.resourcegroup.location
  resource_group_name = azurerm_resource_group.resourcegroup.name
  service_plan_id     = azurerm_service_plan.plan.id
     
  site_config {
    application_stack {
      docker_image     = "<image-registry>"
      docker_image_tag = var.GIT_VERSION
    }
  }
}

在我的例子中,docker_image_tag版本没有被正确填充。在提供正确的值之后,Terraform成功部署。

相关问题