使用 Azure WebApp Rest API 启动和停止连续 Azure webJob 导致 404 错误
Start and Stop of continuous Azure webJob with Azure WebApp Rest API results in 404 Error
我使用 DevOps 将连续的 WebJobs 部署到我现有的 Azure WebApp。它已经起来 运行。
当我试图停止 Azure 网络前端中的 webJob 时,它不起作用。
所以我用了stop Command of the Azure WebApp API。
POST https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/continuouswebjobs/{webJobName}/stop?api-version=2016-08-01
令人惊讶的是,此调用返回了 404 错误。
然而,当我执行 Get Continuous WebJob Command 它 returns 所有关于 webJob 的信息,这意味着它可以被找到。
GET https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/continuouswebjobs/{webJobName}?api-version=2016-08-01
我也试过使用Kudu API。
POST /api/continuouswebjobs/{job name}/stop
但是,停止命令产生相同的 404 响应消息,而 get 命令产生 WebJob 处于状态 "Running" 的肯定结果。
GET /api/continuouswebjobs/{job name}
这种行为有什么原因吗?如何使用上述 post 请求启动/停止 webJob。
你在前端停止webjob的方法是什么?
还有 API 停止连续的网络作业,你可以试试这个
POST https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/continuouswebjobs/{webJobName}/stop?api-version=2016-08-01
更多信息,你可以参考这个文档:Stop Continuous Web Job
事实证明我的部署方式是问题的根源。
Daniels 对此的回答 对我帮助很大。
基本上您需要在您的 WebApp 中创建一个虚拟应用程序,然后从 Azure Devops 中将您的 WebJob 部署到该应用程序。
完成此操作后,您就可以使用上述所有 API 成功启动/停止连续 web 作业。
根据我在此处阅读的内容、已接受答案的链接主题(值得一读!)以及我自己的配置问题(仅涉及我们项目中的一个项目),我注意到在我们的案例中,导致 404 的 webjob错误未使用相同的输出目录发布,它使用 $(Build.ArtifactStagingDirectory)/My.Api/app_data/jobs/Continuous/MyWebjob
而不是 $(Build.ArtifactStagingDirectory)/My.Api/app_data/jobs/Continuous/
发布
所以在我们的例子中,我们不使用虚拟应用程序。
我使用 DevOps 将连续的 WebJobs 部署到我现有的 Azure WebApp。它已经起来 运行。
当我试图停止 Azure 网络前端中的 webJob 时,它不起作用。 所以我用了stop Command of the Azure WebApp API。
POST https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/continuouswebjobs/{webJobName}/stop?api-version=2016-08-01
令人惊讶的是,此调用返回了 404 错误。
然而,当我执行 Get Continuous WebJob Command 它 returns 所有关于 webJob 的信息,这意味着它可以被找到。
GET https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/continuouswebjobs/{webJobName}?api-version=2016-08-01
我也试过使用Kudu API。
POST /api/continuouswebjobs/{job name}/stop
但是,停止命令产生相同的 404 响应消息,而 get 命令产生 WebJob 处于状态 "Running" 的肯定结果。
GET /api/continuouswebjobs/{job name}
这种行为有什么原因吗?如何使用上述 post 请求启动/停止 webJob。
你在前端停止webjob的方法是什么?
还有 API 停止连续的网络作业,你可以试试这个
POST https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/continuouswebjobs/{webJobName}/stop?api-version=2016-08-01
更多信息,你可以参考这个文档:Stop Continuous Web Job
事实证明我的部署方式是问题的根源。
Daniels 对此的回答
基本上您需要在您的 WebApp 中创建一个虚拟应用程序,然后从 Azure Devops 中将您的 WebJob 部署到该应用程序。
完成此操作后,您就可以使用上述所有 API 成功启动/停止连续 web 作业。
根据我在此处阅读的内容、已接受答案的链接主题(值得一读!)以及我自己的配置问题(仅涉及我们项目中的一个项目),我注意到在我们的案例中,导致 404 的 webjob错误未使用相同的输出目录发布,它使用 $(Build.ArtifactStagingDirectory)/My.Api/app_data/jobs/Continuous/MyWebjob
而不是 $(Build.ArtifactStagingDirectory)/My.Api/app_data/jobs/Continuous/
所以在我们的例子中,我们不使用虚拟应用程序。