问题描述
我有一个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有所不同。