我在Windows Server 2012上的IIS中托管了一个MVC应用程序。在我的应用程序中,我试图访问VSTS但是我无法做到。
我尝试导航到服务器的IE中的URL,也没有显示任何内容。仅显示白色屏幕。
我尝试为端口443添加入站和出站规则,但没有任何工作。在调试控制台中,在网络下,它只发送Get请求,它只在那里被触发。 我搜索了很多网但没找到任何东西。任何帮助将不胜感激。
我正在尝试使用以下代码访问VSTS
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"];
答案 0 :(得分:0)
您没有指定要对VSTS进行身份验证的凭据,启用&#34;备用身份验证凭据&#34;对于您的帐户,请将您的代码更新为以下内容,然后重试:
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"];
答案 1 :(得分:0)
默认情况下,对于IIS上托管的应用程序,如果身份验证类型不是Windows身份验证,则无法访问您的VSTS,它会使用应用程序池身份。
因此,您可以指定帐户来访问您的VSTS。
简单代码:
NetworkCredential cred = new NetworkCredential("[user name]", "[password]");
TfsTeamProjectCollection tpc = new TfsTeamProjectCollection(new Uri("[collection url]"), cred);
tpc.EnsureAuthenticated();
您还可以更改应用程序池的标识。
答案 2 :(得分:0)
您的方案仅支持基本身份验证(或OAuth)(Azure上托管的Web应用程序连接到Visual Studio Team Services)。 放弃使用旧的TFS API(又名对象模型)并拥抱VSTS REST APIs。请按照以下步骤操作:
对于任何HTTP请求,传入包含PAT的Basic Auth标头:您可以使用您选择的任何REST库,或者您可以利用名为Microsoft.TeamFoundationServer.Client的VSTS特定.NET库,它使用下面的REST API。后者使用此示例代码列出您的VSTS帐户的所有团队项目(PAT可以访问的那些):
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;