【发布时间】:2020-04-15 14:50:34
【问题描述】:
我们正在将我们的产品迁移到云端。我目前正在测试将我们的 Web 应用程序部署到 azure Web 应用程序。我们的应用程序由两部分组成。一个 ASP.Net Webforms 应用程序和一个 ASP.Net Web API 项目。这些项目是 2 个独立的应用程序,需要在 azure 中作为 2 个独立的应用程序运行。我已将 Web 应用程序配置如下:
如您所见,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 应用程序时,我也收到错误:
部署 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 似乎不支持通过该接口的子应用程序。
【问题讨论】:
-
你好朋友,如果你使用 zip deploy 作为部署方式,结果是什么?
-
使用zip deploy时结果完全一样。我通过将 packageForLinux 属性更改为 '$(Pipeline.Workspace)\API\package.zip' 对其进行了测试
-
@LanceLi-MSFT 我还在原始问题中添加了相关的诊断日志记录
-
综上所述,我认为您的问题与 azure/kudu 方面更相关,请检查this one 的建议是否对您的方案有帮助。
-
我看了看,并尝试将模式设置为 webdeploy,但无济于事。您提到的主题也与我的问题完全相反。他不能删除文件夹,而我不能创建文件夹
标签: azure-pipelines azure-web-app-service