Событие создания проекта ISubscriber не отслеживается - PullRequest
1 голос
/ 07 января 2020

У нас есть пользовательский подключаемый модуль 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;
        }
...