Проблемы с плагином TFS 2017 - возникла исключительная ситуация TF30063: у вас нет прав доступа "https://tfs.com//TeamProject - PullRequest
0 голосов
/ 03 мая 2018

Я пытаюсь создать в TFS 2017 плагин, который проверяет наличие связанных рабочих элементов перед регистрацией и отклоняет регистрацию, если она не удовлетворяет нескольким условиям. Это работало для One Collection и One TeamProject. Сейчас я пытаюсь реализовать это в нескольких коллекциях и командных проектах и ​​выдает следующее сообщение об ошибке: «TF30063: у вас нет прав доступа» https://tfs.com//TeamProject" Я вставляю приведенный ниже код. Пожалуйста, дайте мне знать, что Возможная проблема будет.

            {
                // Logic Goes here ...

                bool isNullComment = false;
                bool isDevBranchChange = false;
                bool isCodeReviewRequest = false;
                bool isCodeReviewResponse = false;
                bool isTaskAssociated = false;

                //Read all submitted items
                var changes = notification.GetSubmittedItems(requestContext);
                //Check if the changes have any DEV branch changes
                isDevBranchChange = changes.Any(change => change.ToUpper().Contains("/DEV/"));
                if (isDevBranchChange)
                {
                    isNullComment = string.IsNullOrEmpty(notification.Comment.ToString());
                    var assoWorkItems = notification.NotificationInfo.WorkItemInfo.Select(x => x.Id);  //Read all associated workitem id's                       
                    TfsTeamProjectCollection connection = new TfsTeamProjectCollection(GetTfsUri(requestContext));
                    WorkItemStore wiStore = connection.GetService<WorkItemStore>();

                    //check if any of associated workitem has code review
                    foreach (int id in assoWorkItems)
                    {
                        WorkItem wi = wiStore.GetWorkItem(id);
                        // Microsoft.TeamFoundation.WorkItemTracking.WebApi.Models.WorkItem wi = witClient.GetWorkItemAsync(id).Result;

                        if (wi.Type.Name.ToUpper().Equals("CODE REVIEW REQUEST"))
                        {
                            isCodeReviewRequest = true;
                        }
                        if (wi.Type.Name.ToUpper().Equals("TASK"))
                        {
                            isTaskAssociated = true;
                        }
                        if (wi.Type.Name.ToUpper().Equals("CODE REVIEW RESPONSE"))
                        {
                            isCodeReviewResponse = true;
                        }
                    }

                    if (!isCodeReviewRequest || isNullComment || !isCodeReviewResponse || !isTaskAssociated)
                    {
                        statusMessage = "Check-in Rejected. Check-in Comment, Task, Code Review Request and Code Review Response workitems are Required. \nFor more information, please contact TFS Administrators: vsalm@abc.com";
                        return EventNotificationStatus.ActionDenied;
                    }

                }
            }
            catch (Exception exception)
            {

                statusMessage = "Caught an Exception" + exception.Message;
                return EventNotificationStatus.ActionDenied;
                // Any exception, TFS will disable it. So, Log it and eat it.
                TeamFoundationApplicationCore.LogException("DecisionPoint plugin encountered the following error while processing events", exception);
            }

        }

        return EventNotificationStatus.ActionPermitted;
    }

    private Uri GetTfsUri(IVssRequestContext _requestContext)
    {

        var locationService = _requestContext.GetService<ILocationService>();
        return new Uri(locationService.GetServerAccessMapping(_requestContext).AccessPoint + "/" + _requestContext.ServiceHost.Name);
    }
}

}

...