从 VS19 调试模式到已发布网站的 DevOps 接口有什么区别?
What is a Difference between DevOps Interface from VS19 Debug Mode to published Website?
我有一个 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 Basic 身份验证已根据 Microsoft 关闭。老实说,我试着打开和关闭它。
第一个站点是用发布配置发布的,但实际上因为问题我切换到调试配置,没有成功发布。
有人知道我忘记了什么吗?为什么我的请求被拒绝?
问题出在 IIS 配置中。正如我在问题中提到的,站点在公司网络中是 运行。我将应用程序池配置为由本地用户执行。在我将本地用户更改为网络用户后,它起作用了。
据我所知,VS 有自己的 IIS,这是 运行 签名的网络用户。这与主机上的 IIS 不同。
我有一个 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 Basic 身份验证已根据 Microsoft 关闭。老实说,我试着打开和关闭它。
第一个站点是用发布配置发布的,但实际上因为问题我切换到调试配置,没有成功发布。
有人知道我忘记了什么吗?为什么我的请求被拒绝?
问题出在 IIS 配置中。正如我在问题中提到的,站点在公司网络中是 运行。我将应用程序池配置为由本地用户执行。在我将本地用户更改为网络用户后,它起作用了。 据我所知,VS 有自己的 IIS,这是 运行 签名的网络用户。这与主机上的 IIS 不同。