2

I am trying to subscribe to CheckinEvent in TFS 2010 using TFS IEventService. For some reason I keep getting:

Event type <<event type>> does not exist

for WorkItemChangedEvent and CheckinEvent. What am I doing wrong?

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);
4

2 回答 2

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 需要包含您的集合名称。

于 2013-03-01T20:28:31.743 回答
1

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

于 2013-03-01T20:11:06.343 回答