Исключение «Метод не разрешен» при выполнении CreateChangesetAsync из TfvcClient - PullRequest
0 голосов
/ 11 марта 2019

Я работаю в довольно большой организации, и мы столкнулись с проблемой, поскольку нам нужно было перенести одно из наших решений.

Подводя итог, у нас есть внутренний инструмент, который просматривает или старый TFS 2013 сервер и анализирует несколько файлов csproj и config для обновления некоторого содержимого, чтобы иметь возможность перенести наши сайты на IIS10 .

Предыдущее решение, которое использовало пакеты NuGet Machado.Microsoft.TeamFoundation и Machado.Microsoft.TeamFoundation.client ( теперь устарело ) и не было больше работает хорошо.

Было решено перенести наше решение на пакеты " Microsoft.TeamFoundation " NuGet. Все идет хорошо вместо части регистрации.

private TfvcChangesetRef Checkin(TfvcItem item, string newContent)
{
    // Establish a connection using Windows Credentials
    using (var connection = TfsHelper.GetConnection())
    // Create TFS Client
    using (var tfvcClient = connection.GetClient<TfvcHttpClient>())
    {
        item.ContentMetadata = new FileContentMetadata();

        var changeset = new TfvcChangeset();
        var tfvcChange = new TfvcChange(item, versionControlChangeType.Edit);
        tfvcChange.NewContent = new ItemContent();
        tfvcChange.NewContent.Content = newContent;
        tfvcChange.NewContent.ContentType = ItemContentType.RawText;
        tfvcChange.Item.Path = item.Path;

        var changesList = new List<TfvcChange>();
        changesList.Add(tfvcChange);
        changeset.Author = new IdentityRef();
        changeset.Changes = changesList;
        changeset.Comment = "This is a test";

        return tfvcClient.CreateChangesetAsync(changeset).Result;
    }
}

Определяется TfsHelper.GetConnection():

public static VssConnection GetConnection()
{
    var connection = new VssConnection(new Uri(ConfigurationManager.AppSettings["TfsUri"]), new VssAadCredential());

    connection.ConnectAsync().SyncResult();

    // Correctly contains the AAD user account
    return connection;
}

Приложение разрывается при вызове tfvcClient.CreateChangesetAsync(changeset) с набором изменений, состоящим из:

Changes          Count = 1 (Correct, one change to be checked in)
Comment          "This is a test"
Author           typeof(IdentifyRef)
Other values     Default ones.

Исключение составляет:

System.AggregateException: 'One or more errors occurred.'
InnerException: VssServiceResponseException: Method Not Allowed

StackTrace of innerException:
   at Microsoft.VisualStudio.Services.WebApi.VssHttpClientBase.<HandleResponseAsync>d__52.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Microsoft.VisualStudio.Services.WebApi.VssHttpClientBase.<SendAsync>d__50.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Microsoft.VisualStudio.Services.WebApi.VssHttpClientBase.<SendAsync>d__47`1.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Microsoft.VisualStudio.Services.WebApi.VssHttpClientBase.<SendAsync>d__28`1.MoveNext()

Мы уже проверили и внедрили некоторые решения, найденные через Интернет, но в настоящее время ничего не работает. Не могли бы вы понять, что не так или нет?

Спасибо

1 Ответ

1 голос
/ 11 марта 2019

Использование объектной модели SOAP в библиотеке ExtendedClient для TFS 2013;TFS 2013 не полностью поддерживает API REST, используемые клиентом REST.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...