Azure devops 无法导航到Windows服务器计算机中的VSTS url

Azure devops 无法导航到Windows服务器计算机中的VSTS url,azure-devops,windows2012,Azure Devops,Windows2012,我在Windows Server 2012的IIS中托管了一个MVC应用程序。在我的应用程序中,我试图访问VST,但无法访问 我曾尝试在IE中导航到服务器的URL,但也没有显示任何内容。仅显示一个白色屏幕 我曾尝试为端口443添加入站和出站规则,但没有任何效果。在调试控制台中,在网络下,它只发送Get请求,并且只在那个里被击中。 我在网上搜索了很多,但什么也没找到。任何帮助都将不胜感激 我正在尝试使用下面的代码访问VST WorkItemStore workItemStore = null;

我在Windows Server 2012的IIS中托管了一个MVC应用程序。在我的应用程序中,我试图访问VST,但无法访问

我曾尝试在IE中导航到服务器的URL,但也没有显示任何内容。仅显示一个白色屏幕

我曾尝试为端口443添加入站和出站规则,但没有任何效果。在调试控制台中,在网络下,它只发送Get请求,并且只在那个里被击中。 我在网上搜索了很多,但什么也没找到。任何帮助都将不胜感激

我正在尝试使用下面的代码访问VST

 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();
您还可以更改应用程序池的标识

  • 打开IIS管理器>应用程序池
  • 选择应用程序池>高级设置(操作窗格)
  • 对于标识属性,请单击…按钮
  • 选择内置帐户选项并选择一个帐户
  • 另一方面,关于增强的安全配置,如果不想禁用,可以将其关闭或将必要的站点添加到信任站点列表中。(它将提示包含URL的对话框)

    您的场景只支持基本身份验证(或OAuth)(托管在Azure上并连接到Visual Studio Team Services的web应用程序)。 抛弃旧的TFSAPI(又名对象模型)的使用,接受新的方法。遵循以下步骤:

    • 创建您的个人访问令牌:PAT将用作密码,至于用户名,您可以使用空字符串
    • 对于任何HTTP请求,传入包含PAT的基本身份验证头:您可以使用您选择的任何REST库来执行此操作,也可以利用VSTS特定的.NET库,该库使用下面的REST API。对于后者,下面的示例代码列出了VSTS帐户的所有团队项目(PAT有权访问的项目):


    您配置了什么公司防火墙?它可能在该级别被阻止…IE增强安全配置是否已打开?(服务器管理器>本地服务器)如果是,请尝试将其关闭。是的,已打开增强的安全配置。如果我将其关闭,应用程序是否能够访问该链接,或者我们必须为此执行任何其他操作?我已禁用增强的安全性,现在我可以在IE中访问VSO,但在我的应用程序中,但我仍然收到相同的异常
    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;