gpt4 book ai didi

azure-pipelines - 发布到 Azure Web 应用程序子应用程序失败并显示 409 错误

转载 作者:行者123 更新时间:2023-12-02 04:19:49 33 4
gpt4 key购买 nike

我们正在将我们的产品迁移到云端。我目前正在测试将我们的 Web 应用程序部署到 azure Web 应用程序。我们的应用程序由两部分组成。一个 ASP.Net Webforms 应用程序和一个 ASP.Net Web API 项目。这些项目是 2 个独立的应用程序,需要作为 2 个独立的应用程序在 azure 中运行。我已将 Web 应用程序配置如下:

enter image description here

如您所见,api 是根的子应用程序。现在我有 2 个部署任务 (AzureRmWebAppDeployment@4),用于部署网站和 API。部署网站的任务运行没有任何问题。但是,部署 api 的任务会引发错误:

Got service connection details for Azure App Service:'***'
##[error]Error: Failed to create path 'site/wwwroot/api' from Kudu. Error: Conflict (CODE: 409)
Successfully added release annotation to the Application Insight : ***
Successfully updated deployment History at https://***.scm.azurewebsites.net/api/deployments/***
App Service Application URL: http://***.azurewebsites.net/api
Finishing: Publish API to Azure

显然它无法在 wwwroot 中创建“api”文件夹。

诊断日志显示它确定“api”文件夹不存在,并且在尝试创建它时发生冲突错误:
##[debug]Virtual Application Map: Physical path: 'site\wwwroot\api'. Virtual path: '/api'.
##[debug][GET]https://$***:***@***.scm.azurewebsites.net/api/vfs/site/wwwroot/api/
##[debug]loaded affinity cookie ["ARRAffinity=***;Path=/;HttpOnly;Domain=***.scm.azurewebsites.net"]
##[debug]listFiles. Data: {"statusCode":404,"statusMessage":"Not Found","headers":{"cache-control":"no-cache","pragma":"no-cache","content-length":"57","content-type":"application/json; charset=utf-8","expires":"-1","server":"Microsoft-IIS/10.0","x-ms-request-id":"f395b98d-89ca-450e-b4f4-9df4d81f3ef0","x-aspnet-version":"4.0.30319","x-powered-by":"ASP.NET","set-cookie":["ARRAffinity=***;Path=/;HttpOnly;Domain=***.scm.azurewebsites.net"],"date":"Thu, 16 Apr 2020 13:58:57 GMT","connection":"close"},"body":{"Message":"'D:\\home\\site\\wwwroot\\api\\' not found."}}
##[debug]setting affinity cookie ["ARRAffinity=***;Path=/;HttpOnly;Domain=***.scm.azurewebsites.net"]
##[debug][PUT]https://$***:***@***.scm.azurewebsites.net/api/vfs/site/wwwroot/api/
##[debug]Encountered a retriable status code: 409. Message: 'Conflict'.
##[debug][PUT]https://$***:***@***.scm.azurewebsites.net/api/vfs/site/wwwroot/api/
##[debug]Encountered a retriable status code: 409. Message: 'Conflict'.
##[debug][PUT]https://$***:***@***.scm.azurewebsites.net/api/vfs/site/wwwroot/api/
##[debug]Encountered a retriable status code: 409. Message: 'Conflict'.
##[debug][PUT]https://$***:***@***.scm.azurewebsites.net/api/vfs/site/wwwroot/api/
##[debug]Encountered a retriable status code: 409. Message: 'Conflict'.
##[debug][PUT]https://$***:***@***.scm.azurewebsites.net/api/vfs/site/wwwroot/api/
##[debug]createPath. Data: {"statusCode":409,"statusMessage":"Conflict","headers":{"cache-control":"no-cache","pragma":"no-cache","content-length":"87","content-type":"application/json; charset=utf-8","expires":"-1","server":"Microsoft-IIS/10.0","x-ms-request-id":"5a889012-0b6c-421a-9c38-2eced7483369","x-aspnet-version":"4.0.30319","x-powered-by":"ASP.NET","date":"Thu, 16 Apr 2020 13:59:50 GMT","connection":"close"},"body":{"Message":"Cannot delete directory. It is either not empty or access is not allowed."}}
##[debug]Deployment Failed with Error: Error: Failed to create path 'site/wwwroot/api' from Kudu. Error: Conflict (CODE: 409)
##[debug]task result: Failed
##[error]Error: Failed to create path 'site/wwwroot/api' from Kudu. Error: Conflict (CODE: 409)
##[debug]Processed: ##vso[task.issue type=error;]Error: Failed to create path 'site/wwwroot/api' from Kudu. Error: Conflict (CODE: 409)
##[debug]Processed: ##vso[task.complete result=Failed;]Error: Failed to create path 'site/wwwroot/api' from Kudu. Error: Conflict (CODE: 409)

手动尝试将“api”文件夹添加到 azure web 应用程序时,我也收到错误消息:

enter image description here

部署 api 的部署任务如下所示:
  - task: AzureRmWebAppDeployment@4
inputs:
ConnectionType: 'AzureRM'
azureSubscription: '***'
appType: 'webApp'
WebAppName: '***'
packageForLinux: '$(Pipeline.Workspace)\API'
VirtualApplication: 'api'
displayName: Publish API to Azure

这里有什么交易?有没有关于如何做到这一点的教程?我在 Azure 中配置错误吗?我需要改变什么才能使这项工作?我试图查看是否可以从 Visual Studio 手动发布 API 以查看它是否在那里工作,但 Visual Studio 似乎不支持通过该界面的子应用程序。

最佳答案

问题原来是 AzureRmWebAppDeployment@4 任务自动启用了 WEBSITE_RUN_FROM_PACKAGE 设置。启用此功能会导致整个 wwwroot 文件夹变为只读。但是,界面中的任何地方都没有提到这一点。这使得无法部署子应用程序。禁用此选项可解决此问题。
我现在将尝试在将 API 子应用程序发送到 azure 之前将其包含在包中,以查看该子应用程序是否可以正常工作。否则我就不能使用“从包运行”选项,尽管它比普通部署有优势
您可以通过在任务中使用以下参数来禁用从包运行:

 - task: AzureRmWebAppDeployment@4 
inputs:        
packageForLinux: '<path>' 
  enableCustomDeployment: true         
deploymentType: 'webDeploy'

关于azure-pipelines - 发布到 Azure Web 应用程序子应用程序失败并显示 409 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61231738/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com