Azure devops 无法导航到Windows服务器计算机中的VSTS url
我在Windows Server 2012的IIS中托管了一个MVC应用程序。在我的应用程序中,我试图访问VST,但无法访问 我曾尝试在IE中导航到服务器的URL,但也没有显示任何内容。仅显示一个白色屏幕 我曾尝试为端口443添加入站和出站规则,但没有任何效果。在调试控制台中,在网络下,它只发送Get请求,并且只在那个里被击中。 我在网上搜索了很多,但什么也没找到。任何帮助都将不胜感激 我正在尝试使用下面的代码访问VSTAzure devops 无法导航到Windows服务器计算机中的VSTS url,azure-devops,windows2012,Azure Devops,Windows2012,我在Windows Server 2012的IIS中托管了一个MVC应用程序。在我的应用程序中,我试图访问VST,但无法访问 我曾尝试在IE中导航到服务器的URL,但也没有显示任何内容。仅显示一个白色屏幕 我曾尝试为端口443添加入站和出站规则,但没有任何效果。在调试控制台中,在网络下,它只发送Get请求,并且只在那个里被击中。 我在网上搜索了很多,但什么也没找到。任何帮助都将不胜感激 我正在尝试使用下面的代码访问VST WorkItemStore workItemStore = null;
WorkItemStore workItemStore = null;
Uri collectionUri = new Uri("https://microsoft.visualstudio.com/DefaultCollection");
TfsTeamProjectCollection teamProjectCollection = new TfsTeamProjectCollection(collectionUri);
workItemStore = teamProjectCollection.GetService<WorkItemStore>();
Project teamProject = workItemStore.Projects["*ProjectName*"];
WorkItemType workItemType = teamProject.WorkItemTypes["Scenario"];
WorkItemStore WorkItemStore=null;
Uri collectionUri=新Uri(“https://microsoft.visualstudio.com/DefaultCollection");
TfsTeamProjectCollection teamProjectCollection=新的TfsTeamProjectCollection(collectionUri);
workItemStore=teamProjectCollection.GetService();
Project teamProject=workItemStore.Projects[“*ProjectName*”];
WorkItemType WorkItemType=teamProject.WorkItemTypes[“场景”];
您没有指定要向VSTS进行身份验证的凭据,请为您的帐户启用“备用身份验证凭据”,并将代码更新为以下内容,然后重试:
WorkItemStore workItemStore = null;
Uri collectionUri = new Uri("https://microsoft.visualstudio.com/DefaultCollection");
NetworkCredential nc = new NetworkCredential("alternateusername","alternatepassword");
BasicAuthCredential bac = new BasicAuthCredential(nc);
TfsTeamProjectCollection teamProjectCollection = new TfsTeamProjectCollection(collectionUri,bac);
workItemStore = teamProjectCollection.GetService<WorkItemStore>();
Project teamProject = workItemStore.Projects["*ProjectName*"];
WorkItemType workItemType = teamProject.WorkItemTypes["Scenario"];
WorkItemStore WorkItemStore=null;
Uri collectionUri=新Uri(“https://microsoft.visualstudio.com/DefaultCollection");
NetworkCredential nc=新的网络凭据(“alternateusername”、“alternatepassword”);
BasicAuthCredential bac=新的BasicAuthCredential(nc);
TfsTeamProjectCollection teamProjectCollection=新的TfsTeamProjectCollection(collectionUri,bac);
workItemStore=teamProjectCollection.GetService();
Project teamProject=workItemStore.Projects[“*ProjectName*”];
WorkItemType WorkItemType=teamProject.WorkItemTypes[“场景”];
默认情况下,对于托管在IIS上的应用程序,如果身份验证类型不是Windows身份验证,它将使用applicationpool标识,Windows身份验证无法访问您的VST
因此,您可以指定访问VST的帐户
简单代码:
NetworkCredential cred = new NetworkCredential("[user name]", "[password]");
TfsTeamProjectCollection tpc = new TfsTeamProjectCollection(new Uri("[collection url]"), cred);
tpc.EnsureAuthenticated();
您还可以更改应用程序池的标识
- 创建您的个人访问令牌:PAT将用作密码,至于用户名,您可以使用空字符串李>
- 对于任何HTTP请求,传入包含PAT的基本身份验证头:您可以使用您选择的任何REST库来执行此操作,也可以利用VSTS特定的.NET库,该库使用下面的REST API。对于后者,下面的示例代码列出了VSTS帐户的所有团队项目(PAT有权访问的项目):
Microsoft.TeamFoundation.TeamFoundationServerUnauthorizedException:TF30063:您无权访问https://microsoft.visualstudio.com/DefaultCollection.
如何在应用程序中访问VST?您想做什么?应用程序池中提供的标识仅限我的。它可以用它访问vstf,但不能访问VST。因此,我将尝试添加NetworkCredential
代码,并在此处更新。谢谢@指定应用程序池标识对我来说很好。我已经将应用程序池标识指定为我的。我已经在我的包中添加了上面的代码,但仍然得到了相同的异常。在本地,它的工作完全正常。我可以在服务器上执行VST的任何验证检查吗?:(@G.SAbhaypal您可以共享一个简单的项目吗?OneDrive?同时提供将项目托管到IIS的详细步骤。我在代码中添加了NetworkCredential
逻辑,但仍然存在相同的问题。我可以在本地服务器上正常工作,但只有在服务器上我面临问题。@G.SAbhaypal您是否启用了备用身份验证credentials,然后在您的代码中使用它?我在一个公司域中,所以我在VSTS中的帐户配置文件中没有启用该选项。@G.SAbhaypal,所以您正在使用Azure AD对VSTS进行身份验证?是的,我猜是这样。因为服务器是Azure web服务器,我的公司id在该服务器上具有默认访问权限。
using System.Net.Http;
using System.Net.Http.Headers;
string credentials = Convert.ToBase64String(System.Text.ASCIIEncoding.ASCII.GetBytes(string.Format("{0}:{1}", "", YOUR_PATH)));
using (var client = new HttpClient())
{
client.BaseAddress = new Uri("https://accountname.visualstudio.com:"); //url of our account
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"));
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", credentials);
//connect to the REST endpoint
HttpResponseMessage response = client.GetAsync("_apis/projects?stateFilter=All&api-version=1.0").Result;