OAuth2
でWebService
にVS-Team-Servicesを接続する必要があります。
公式ウェブサイトにsample solutionが見つかりましたが、私たちのウェブサービスコードで使用するように変更することはできません。
アクセストークンを要求するときは、アクセス許可Accept or Deny
を要求しているためです。
許可ページなしでトークンへのアクセスを自動的に許可する必要があります。Asp.Net Webフォームを介してVS-Team Services OAuthにアクセス
これはOAuthのない以前の作業コードです。 OAuthに基づいてこのコードを修正する必要があります。
private Dictionary<string, MyTfsTeamProjectCollectionHelper> GetTFSProjectCollections()
{
try
{
TFSConnectionProviderHelper connect = new TFSConnectionProviderHelper();
ICredentials iCred = new NetworkCredential(strTFSUsername, strTFSPassword);
connect.GetCredentials(new Uri(ConfigurationManager.AppSettings["ServerURL"]), iCred);
TfsConfigurationServer configurationServer = TfsConfigurationServerFactory.GetConfigurationServer(new Uri(ServerURL), connect);
configurationServer.EnsureAuthenticated();
ReadOnlyCollection<CatalogNode> collectionNodes = configurationServer.CatalogNode.QueryChildren(new[] { CatalogResourceTypes.ProjectCollection }, false, CatalogQueryOptions.None);
DictionaryTfsTeamProjectCollection = new Dictionary<string, MyTfsTeamProjectCollectionHelper>();
foreach (CatalogNode tpcNode in collectionNodes)
{
MyTfsTeamProjectCollectionHelper myTfsTeamProjectCollection = new MyTfsTeamProjectCollectionHelper();
Guid tpcId = new Guid(tpcNode.Resource.Properties["InstanceId"]);
TfsTeamProjectCollection tfsTeamProjectCollection = configurationServer.GetTeamProjectCollection(tpcId);
myTfsTeamProjectCollection.TfsTeamProjectCollection = tfsTeamProjectCollection;
DictionaryTfsTeamProjectCollection.Add(tfsTeamProjectCollection.Name.Replace(tfsTeamProjectCollection.ConfigurationServer.Name.ToString() + "/", "").ToLower(), myTfsTeamProjectCollection);
}
return DictionaryTfsTeamProjectCollection;
}
catch (Exception ex)
{
Logger.WriteToLog(Logger.LogType.Error, strFlow, strCaseno, strTFSID, strUser, ex.Message);
Logger.WriteToLog(Logger.LogType.Error, strFlow, strCaseno, strTFSID, strUser, " StackTrace: " + ex.StackTrace);
return null;
}
}
private Project GetTFSProject(string tfsProjectCollectionName, string StrTFSProject)
{
try
{
GetTFSProjectCollections();
Project project = null;
if (DictionaryTfsTeamProjectCollection != null && DictionaryTfsTeamProjectCollection.Keys.Contains(tfsProjectCollectionName.ToLower()))
{
TfsTeamProjectCollection myTeamProjectCollection = DictionaryTfsTeamProjectCollection[tfsProjectCollectionName.ToLower()].TfsTeamProjectCollection;
WorkItemStore workItemStore = myTeamProjectCollection.GetService<WorkItemStore>();
project = (from Project pr in workItemStore.Projects select pr).ToList().Where(i => i.Name.ToLower() == StrTFSProject.ToLower()).SingleOrDefault();
}
else
{
Logger.WriteToLog(Logger.LogType.Error, strFlow, strCaseno, strTFSID, StrTFSProjectcollection, "ProjectCollectionName does not exist:" + tfsProjectCollectionName);
}
return project;
}
catch (Exception ex)
{
Logger.WriteToLog(Logger.LogType.Error, strFlow, strCaseno, strTFSID, strUser, ex.Message);
Logger.WriteToLog(Logger.LogType.Error, strFlow, strCaseno, strTFSID, strUser, " StackTrace: " + ex.StackTrace);
return null;
}
}
許可ページのスクリーンショット:
アワーズはWebForms
テンプレートです。 VSTS OAuthに簡単にアクセスできますかAsp.Net Webformテンプレート?
** VSTS OAuthテンプレートを使用したAsp.Net Webformがあります** - 既にサンプルがありますか?もしそうなら、正しい方向を指してください。 –
間違いの申し訳ありませんが、私はないことを意味.... –