【问题标题】:How do I perform health-check for on premises IIS app behind firewall using Azure DevOps release pipeline如何使用 Azure DevOps 发布管道对防火墙后的本地 IIS 应用程序执行运行状况检查
【发布时间】:2026-02-09 14:10:01
【问题描述】:

我有什么?

我已经将我的 ASP.NET Core 应用程序部署到我的 IIS。 IIS 应用程序本身在 Internet 上不可见,因为它位于防火墙后面。

问题

如何从运行应用程序的服务器 ping 我的应用程序(以便它对本地主机执行 HTTP GET)并向 Azure DevOps 报告?理想情况下使用现有任务

我可能会写一些 PowerShell,但我真的很想使用现有的解决方案

【问题讨论】:

  • 嗨,这个问题有更新吗?请随时告诉我我的回答是否有帮助~

标签: azure-devops continuous-deployment azure-pipelines-release-pipeline health-monitoring azure-devops-pipelines


【解决方案1】:

不过,目前恐怕还没有内置任务可以完美解决您的问题。

有一个Invoke REST API task 可以调用HTTP API 并解析响应。但此任务只能在代理作业中使用,换句话说,除非您将防火墙设置为允许来自 Azure DevOps 的访问,否则您不能使用此任务。

更新:使用 PowerShell 任务

先决条件:您需要使用self-hosted agent 才能在防火墙内访问您的应用程序。

以下是使用 YAML 管道演示的。经典 UI 流水线的步骤大致相同。

如果您只想获取响应正文:

只需使用 Powershell 任务并发送您的网络请求:

- task: PowerShell@2
  inputs:
    targetType: 'inline'
    script: |
      ...
      Invoke-RestMethod ...

如果要将响应正文保存为变量:

第 1 步。 设置变量:

variables:
  result: null

第 2 步。 使用 PowerShell 任务发送 HTTP 请求并更新变量:

- task: PowerShell@2
  inputs:
    targetType: 'inline'
    script: |
      ...
      $response = Invoke-RestMethod ...
      Write-Host "##vso[task.setvariable variable=result;]$response"

第三步。那么$($env:RESULT)的值就是你的web请求的响应体,你可以在后续的任务中使用它。

【讨论】:

  • powershell 方法可行吗? powwrshell 的输出如何报告回 Azure DevOps?
  • @Liero 是的,PowerShell 任务可以满足您的要求。我已经为你更新了答案~
最近更新 更多