Я создаю политику проверки кода на стороне сервера для TFS, и в настоящее время она работает для любой регистрации, которая выполняется через visual studio, но когда кто-то пытается выполнить регистрацию через веб-интерфейс, она не работает.
Политика ищет связанный рабочий элемент при регистрации, а затем просматривает этот рабочий элемент, чтобы подтвердить его соответствие определенным требованиям.Я могу получить соответствующий рабочий элемент при регистрации в студии визуально через
public EventNotificationStatus ProcessEvent(IVssRequestContext requestContext, NotificationType notificationType, object notificationEventArgs, out int statusCode, out string statusMessage, out ExceptionPropertyCollection properties)
{
statusCode = 0;
statusMessage = string.Empty;
properties = new ExceptionPropertyCollection();
var checkinNotification = notificationEventArgs as CheckinNotification;
if (notificationType == NotificationType.DecisionPoint && notificationEventArgs is CheckinNotification)
{
bool isNullComment = false;
bool isCheckinContains = false;
var service = requestContext.GetService<ILocationService>();
TfsTeamProjectCollection tfsTeamProjectCollection = new TfsTeamProjectCollection(GetTfsUri(requestContext));
WorkItemStore workitemStore = tfsTeamProjectCollection.GetService<WorkItemStore>();
var changes = checkinNotification.GetSubmittedItems(requestContext);
isCheckinContains = changes.Any(change => change.ToUpper().Contains("$/"));
if (isCheckinContains)
{
isNullComment = string.IsNullOrEmpty(checkinNotification.Comment.ToString());
//Read all associated workitem id's
var assoWorkItems = checkinNotification.NotificationInfo.WorkItemInfo.Select(x => x.Id);
}
}
}
, однако это не работает с веб-интерфейсом пользователя.Основное различие, которое я замечаю при запуске кода для Visual Studio и веб-интерфейса пользователя, заключается в том, что контекст запроса относится к совершенно другому URL.
URL-адрес контекста запроса Visual Studio: http://localhost:8080/tfs/DefaultCollection/VersionControl/v5.0/repository.asmx
Веб-интерфейсконтекст запроса: http://localhost:8080/tfs/DefaultCollection/_apis/tfvc/changesets
Я считаю, что мне нужно использовать другое пространство имен и методы для доступа к информации внутри регистрации с помощью веб-интерфейса.
Я пытался использовать «Microsoft.VisualStudio.Services.WebApi "пространство имен для получения данных из веб-интерфейса, но я не могу найти в Интернете никакой информации о том, как получить информацию о регистрации, которая пытается обработать