从VS19调试模式到已发布网站的DevOps接口之间有什么区别?

问题描述

我有一个Web应用程序,该应用程序在我进行编码和调试的同一台PC上发布。 功能之一是与公司的Azure DevOps服务器的接口,以读取或写入WorkItems。 我正在使用VS19。如果我处于从VS(F5或Ctrl + F5)启动的调试模式下,则与DevOps的通信非常正常,我可以读写WorkItems。如果我尝试在同一台PC上托管的已发布站点中使用调试配置执行相同操作,则会收到响应,表明我的请求被拒绝。

要测试我的连接状态,我根据guidelines实施了一种小型测试连接方法 认证是通过PAT实现的。 PAT是正确的,并且身份验证有效。

public async Task<ConnectionStatus> CheckAzureConnection()
{
  string url = _uri + "/_apis/connectionData?api-version=5.1-preview";
  ConnectionStatus status = new ConnectionStatus();

  try
  {
  
    using (HttpClient client = new HttpClient())
    {
      client.DefaultRequestHeaders.Accept.Add(
        new MediaTypeWithQualityHeaderValue("application/json"));

      client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic",Convert.ToBase64String(
          System.Text.ASCIIEncoding.ASCII.GetBytes(
            string.Format("{0}:{1}","My User Name",_personalAccesstoken))));


      using (HttpResponseMessage response = await client.GetAsync(url))
      {
        status.Status = response.StatusCode.ToString(); 
        return status;
      }
    }
  }
  catch (Exception ex)
  {
    status.Status = "Not OK";
    return status;
  }
}

代码在调试期间有效,但在已发布的网站中无效。网站发布在IIS Web服务器上。内部有效证书已绑定到站点。 IIS基本身份验证根据Microsoft进行切换。老实说,我试图打开和关闭它。

一个站点发布了发布配置,但实际上由于问题,我切换到调试配置,但发布失败。

有人对我忘了什么有任何想法吗?为什么我的请求被拒绝了?

解决方法

问题在IIS配置中。正如我在问题中提到的那样,站点正在公司网络中运行。我将应用程序池配置为由本地用户执行。将本地用户更改为网络用户后,它可以工作。 据我所知,VS有其自己的IIS,并且正在使用签名的网络用户运行。这与主机上的IIS有所不同。