由于权限,从ASP.NET应用程序向TFS 2010添加工作项失败

时间:2011-02-16 18:30:01

标签: asp.net iis tfs

我正在开发一个ASP.NET webforms应用程序,它将作为一个简单的入口表单在TFS 2010中创建工作项。

当我在调试模式下本地运行应用程序时,该应用程序正常工作 - 提交完成并创建工作项。

当我将表单发布到我们的开发服务器时,它会出现黄色屏幕并抛出以下错误:

  

[SecurityException:TF50309:The   以下帐户没有   足够的权限来完成   操作:DOMAINNAME \ SERVERNAME $。该   需要以下权限   执行此操作:查看   集合级信息。]

在我的代码中,我正在尝试使用服务帐户访问TFS,并且我可以告诉我在调试模式下运行时正确使用了服务帐户。

这就是我的C#的样子:

string tfsServerUrl = "http://servername:8080/tfs";
string tfsProject = "Web Team Projects";
NetworkCredential tfsCredential = new NetworkCredential("ServiceAccountName", "password", "DOMAIN");
TeamFoundationServer tfs = new TeamFoundationServer(tfsServerUrl, tfsCredential);
tfs.Authenticate();
WorkItemStore workItemStore = new WorkItemStore(tfsServerUrl);

如果我在tfs.Authenticate()行设置断点,则服务器对象会将服务帐户名称显示为当前用户,并且IsAuthenticated = true。

提到SERVERNAME $的异常中的行是让我感到难过的。似乎IIS决定尝试使用应用程序池标识而不是我明确提供的凭据来访问TFS。

我们的开发服务器是运行IIS 7的Server 2008框。

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

TeamFoundationServer类是obselete。您是否尝试过使用TfsTeamProjectCollection(TFS 2008)或TfsConfigurationServer(2010)类?

string tfsServerUrl = "http://servername:8080/tfs";
System.Net.NetworkCredential tfsCredential = new System.Net.NetworkCredential("ServiceAccountName", "password", "DOMAIN");
TfsConfigurationServer tfs =  new TfsConfigurationServer(new Uri(tfsServerUrl), tfsCredential);
tfs.Authenticate(); // You should be able to omit this
WorkItemStore workItemStore = (WorkItemStore)tfs.GetService(typeof(WorkItemStore));