J'essaie d'automatiser la construction d'artefact de téléchargement. L'objectif est de télécharger un artefact de construction spécifique. Lorsque j'appelle J'utilise le code suivant P > buildclient.getartifactcontentenipipasync code>, il lance l'erreur suivante
at Microsoft.VisualStudio.Services.WebApi.VssHttpClientBase.<HandleResponseAsync>d__53.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__51.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.TeamFoundation.Build.WebApi.BuildHttpClientBase.<GetArtifactContentZipAsync>d__10.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 System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()
at Utils.Dashboard.FrmAzureDashboard.<BtnDownloadKHP_Click>d__13.MoveNext() in C:\code\MetaFXTools\ui\Utils\Dashboard\FrmAzureDashboard.cs:line 118
3 Réponses :
Est-ce un bogue dans l'API / SDK? ou est-ce que je fais quelque chose de mal? P>
6.Sait que vous testez uniquement le code par téléchargement Fonction Artefact, assurez-vous de la file d'attente / exécutez le Construisez avec succès avant votre exécution du code. (Attendez la fin de la course de pipeline.) P> blockquote>
Merci. J'ai vérifié que les jetons de construction et de Pat sont corrects car d'autres opérations sur le SDK fonctionnent bien. Le message d'erreur est en question Description. J'essaie sur VS2017 avec .NET 4.8. Pas sûr si cela fait toute différence.
@Abhishek J'utilise VS2019 pendant que je ne pense pas que ce soit la principale cause de la question. Pourriez-vous partager un exemple de projet minimal via Github Link afin que nous puissions le vérifier directement pour vous? (Supprimez le code principal et remplacez les informations personnelles telles que PAT, URL avec *** code> pour protéger vos données personnelles)
J'ai mis à jour l'échantillon en description de la question. GIST: GIST.GITUB.COM/ABHISHEKGOENKA/9759256F995E7F7C9CBCB7872C859 1C0
@Abhishek Merci pour le repo, je le vérifierais plus tard et vous le feriez savoir si j'ai une mise à jour :)
@Abhishek Votre échantillon semble un peu différent de l'échantillon d'origine de votre question. Peut-être que vous oubliez d'ajouter .result code> dans la ligne lancant l'erreur dans votre échantillon GitHub. Essayez de coder dur-codant les paramètres tels que ceci:
zipstream = attendre buildclient.getartifactcontententenipasync ("myProjectName", mybuildid, "myArtifactName"). Résultat; Code> Assurez-vous également que tous les packages Nuget sont la dernière version.
J'ai essayé la suggestion ci-dessus. Mais toujours, j'ai la même erreur. Tous les paramètres de getArtifactContentzipasync code> sont corrects car
buildClient.getartifactasync code> est complet sans erreur avec les mêmes paramètres. J'ai également copié la trace complète de la pile d'erreurs dans la description d'émission
J'ai de nouveau testé le code d'échantillon dans un projet de console .NET 4.8 dans VS2017, avec toutes les dernières versions des packages Nuget. Mon échantillon de code fonctionne bien. Avez-vous vraiment essayé mon échantillon de code sans le modifier?
... assez étrange, que diriez-vous de créer une nouvelle organisation de test, un nouveau projet de test et un nouveau accès complet à tester le code.
Ce serait un grand travail. J'ai eu une certaine solution de contournement. Je continuerai avec ça. Merci pour votre temps et effort.
J'ai aussi frappé le même problème. P>
Ce que j'ai déterminé jusqu'à présent, c'est que l'appel à GetArtifactContentzipasync entraîne une réponse 302 du serveur. P>
(l'en-tête de l'emplacement dans la réponse est le long des lignes de: https://artproroduks1.artifacts.visualstudio.com/.../_apis/artifact/.../Content?format=zip ) P>
à l'intérieur de GetArtifactContentzipasync est un appel à httpresponsemessage.ensursucccessstatusTusSatusCode () et cette erreur doit être lancée car la bibliothèque ne s'attend pas à une redirection à être renvoyée. Il est possible de créer la connexion à l'aide de: Nouvelle VSConnection (URI, CRÉDÔTS, NOUVEAU VSSCLIENTHTTPQUESTSETTES {EVERAUTTOREDIRECT = TRUE}), de sorte que la redirection soit suivie, cependant, alors les erreurs avec un message différent indiquant qu'une version incorrecte a été envoyée à la version incorrecte. serveur. p>
J'ai fini par utiliser getArtifactasyc (). Ressource.downloadurl code> avec un
httpClient code> Demande de téléchargement de l'artefact de pipeline. Voir Github.com/microsoft/azure-devops-auth-semples / arbre / maître / ... pour authentifier la demande
httpclient code>.
Je dois connaître la raison de l'exception étant jetée lors de l'appel de cette API. Dans le pipeline si vous utilisez «Publier des artefacts de construction» pour publier les artefacts, l'API fonctionnera bien. Alors que si vous utilisez une tâche "Publier Pipeline Artifact", l'API reviendra 302 ("trouvé"). P>
Microsoft n'a actuellement aucune solution de contournement pour ce problème et je vous suggère d'utiliser httpClient ou WebClient pour télécharger les artefacts. P>