У нас есть пользовательский подключаемый модуль tfs на стороне сервера, который развернут в Azure DevOps Server 2019 \ Уровень приложений \ Веб-службы \ bin \ Plugins. В плагине есть два подписчика, один подписан на WorkItemChangedEvent, а другой - на ProjectCreatedEvent.
Подписчик WorkItemChangedEvent работает должным образом, к сожалению, подписчик ProjectCreatedEvent - нет. Пробовал отлаживать код после присоединения к процессу w3wp.exe, но метод ProcessEvent никогда не вызывается.
Я создаю проект через браузер, используя мастер создания проекта по умолчанию.
Am Я использовал правую dll для этого события Microsoft.TeamFoundation.Server.ProjectCreatedEvent? Или это устарело?
Передача приведенного ниже примера кода:
Буду признателен за любую помощь.
public class ProjectCreationSubscriber : ISubscriber
{
private static ILog _logger = LogManager.GetLogger(typeof(ProjectCreationSubscriber));
private static readonly string subscriberName = "ProjectCreationSubscriber";
private static Type[] subscribedTypes = null;
private static ControlConfiguration controlConfiguration = null;
private static WorkItemStoreServiceContainer serviceContainer = new WorkItemStoreServiceContainer();
public string Name
{
get
{
return subscriberName;
}
}
public SubscriberPriority Priority
{
get
{
return SubscriberPriority.Normal;
}
}
public Type[] SubscribedTypes()
{
if (subscribedTypes == null)
{
subscribedTypes = new Type[1]
{
typeof(Microsoft.TeamFoundation.Server.ProjectCreatedEvent)
};
}
return subscribedTypes;
}
public EventNotificationStatus ProcessEvent(IVssRequestContext requestContext, NotificationType notificationType, object notificationEventArgs, out int statusCode, out string statusMessage, out ExceptionPropertyCollection properties)
{
statusCode = 0;
properties = null;
statusMessage = String.Empty;
try
{
ProjectCreationSubscriber._logger.InfoFormat("PROCESS EVENT! NotificationType:{0}, NotificationEventArgs:{0}", notificationType, JsonUtilities.Serialize(notificationEventArgs));
if (notificationType == NotificationType.Notification && notificationEventArgs is Microsoft.TeamFoundation.Server.ProjectCreatedEvent)
{
var notificationEvent = notificationEventArgs as ProjectCreatedEvent;
//doing stuff here
}
catch (Exception ex)
{
var exceptionInfo = string.Format("Error occured in {0}", this.Name);
ProjectCreationSubscriber._logger.Error(exceptionInfo, ex);
EventLog.WriteEntry(this.Name, exceptionInfo, EventLogEntryType.Error);
//TeamFoundationApplicationCore.LogException(exceptionInfo, ex);
}
Trace.CorrelationManager.StopLogicalOperation();
return EventNotificationStatus.ActionPermitted;
}