TFS IEventService“事件类型CheckinEvent不存在”

时间:2013-03-01 15:10:30

标签: tfs tfs2010

我正在尝试使用TFS CheckinEvent订阅TFS 2010中的IEventService。出于某种原因,我一直在接受:

  

事件类型<<事件类型>>不存在

代表WorkItemChangedEventCheckinEvent。我做错了什么?

var serverUri = new Uri("http://TFS_SERVICE:8080/tfs");
var server = TfsConfigurationServerFactory.GetConfigurationServer(serverUri);

var eventService = server.GetService<IEventService>();
var preference = new DeliveryPreference
    {
         Schedule = DeliverySchedule.Immediate,
         Type = DeliveryType.Soap,
          Address = "http://localhost:61773/NotifyService.asmx"
     };

int eventId = eventService.SubscribeEvent("CheckinEvent", null, preference);

2 个答案:

答案 0 :(得分:4)

您正在配置服务器级别查询事件服务。这些事件类型仅存在于团队项目集合级别,我假设您实际上想要创建事件订阅。您需要将代码更改为以下内容:

var serverUri = new Uri("http://TFS_SERVICE:8080/tfs/collection");

TfsTeamProjectCollection collection = new TfsTeamProjectCollection(serverUri);
var eventService = collection.GetService<IEventService>();

var preference = new DeliveryPreference
{
  Schedule = DeliverySchedule.Immediate,
  Type = DeliveryType.Soap,
  Address = "http://localhost:61773/NotifyService.asmx"
};

int eventId = eventService.SubscribeEvent("CheckinEvent", null, preference);

请注意,URI需要包含您的收藏名称。

答案 1 :(得分:1)

不使用TfsConfigurationServerFactory,而是使用TfsTeamProjectCollectionFactory.GetTeamProjectCollection()方法。这些事件存在于集合级别,而不是服务器级别。