当我使用模拟时,我正面临通过C#代码访问TFS WorkItemStore的问题。我正在使用的代码如下:
Uri tfsUri = new Uri("https://localtfsinstance/tfs);
NetworkCredential cred = new NetworkCredential("tfsusername", "tfspassword", "ADDomain");
BasicAuthCredential basicCred = new BasicAuthCredential(cred);
TfsClientCredentials tfsCred = new TfsClientCredentials(basicCred);
TfsConfigurationServer _configurationServer = new TfsConfigurationServer(tfsUri, tfsCred);
ReadOnlyCollection <Microsoft.TeamFoundation.Framework.Client.CatalogNode> _collectionNodes =
_configurationServer.CatalogNode.QueryChildren(
new[] {
CatalogResourceTypes.ProjectCollection
}, false, CatalogQueryOptions.None);
Microsoft.TeamFoundation.Framework.Client.CatalogNode collectionNode = _collectionNodes.FirstOrDefault(c => c.Resource.DisplayName == "MyProjCollection");
var tpcId = new Guid(collectionNode.Resource.Properties["InstanceId"]);
var tpc = _configurationServer.GetTeamProjectCollection(tpcId);
Microsoft.TeamFoundation.WorkItemTracking.Client.WorkItemStore _wiStore = tpc.GetService<TF_WIT_Client.WorkItemStore>();
我有两个域帐户,两者都对TFS具有相同的权限。如果我使用其中任何一个帐户及其各自的密码,代码就可以正常工作并检索WorkItemStore。
但是,如果我使用第一个域帐户模拟应用程序并使用第二个帐户进行TFS身份验证,则会出现以下错误:
发生System.InvalidOperationException HResult = 0x80131509
消息=未找到集合节点:ProjectCollectionName 'MyProjCollection'内部异常1:COMException:错误HRESULT E_FAIL已经出现 通过调用COM组件返回。
由于编写应用程序的方式,跳过模拟不是一种选择。有没有人在此之前遇到过这个问题和/或知道解决方法?感谢。
答案 0 :(得分:1)
要使模拟工作,进程正在运行的用户必须具有此集合的“Make requests on behalf of others
”权限。如果用户没有此权限,那么您将看到“拒绝访问”错误消息。
因此,请先授予用户“Make requests on behalf of others
”权限。
您可以参考以下文章使用TFS模拟: