【问题标题】:Multiple DevOps REST methods throwing 'command failed with an unexpected error'多个 DevOps REST 方法抛出“命令失败并出现意外错误”
【发布时间】:2020-08-19 18:07:14
【问题描述】:

我在通过“az rest”运行 DevOps API 时遇到问题我尝试的两种方法返回相同的结果

我正在使用的代码 sn-p

$resource = "https://graph.microsoft.com"
$uribase = "https://dev.azure.com/{org}/{project}"
$requestpath = "/_apis/build/builds?api-version=6.0-preview.6"
$uri = $uribase+$requestpath
az rest --uri $uri --headers "Content-Type=application/json" --resource $resource

我尝试了几个不同的 API 版本,低至 5.1,但结果是一样的。如果我删除 --resource 参数,它会抱怨无法确定身份验证。 'https://graph.microsoft.com' 是本次通话的正确资源吗?

返回的错误

> az : Not a json response, outputting to stdout. For binary data suggest use "--output-file" to 
write to a file
At line:5 char:1
+ az rest --uri $uri --headers "Content-Type=application/json" --resour ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo          : NotSpecified: (Not a json resp...write to a file:String) [], RemoteException
+ FullyQualifiedErrorId : NativeCommandError 
The command failed with an unexpected error. Here is the traceback:
'charmap' codec can't encode character '\u221e' in position 6302: character maps to <undefined>
Traceback (most recent call last):
  File "D:\a\1\s\build_scripts\windows\artifacts\cli\Lib\site- 
packages\azure\cli\command_modules\util\custom.py", line 18, in rest_call
  File "C:\Users\VSSADM~1\AppData\Local\Temp\pip-install-yh2ypeu1\requests\requests\models.py", line 
897, in json
  File "C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2\lib\json\__init__.py", line 354, in loads
  return _default_decoder.decode(s)
....

我已将输出写入文件。这是一个与登录/注销相关的 HTML 文件——从文本中看不出什么,但有点线索。因此,我一直在尝试像这样显式登录 devops(即使我是通过“az login”登录的):

az devops login --organization https://dev.azure.com/{org}

每次登录都会挂起,我必须关闭powershell才能重新启动。我已经重新启动了我的机器,尝试使用和不使用组织参数,尝试通过 az login 重新登录,它工作正常,但我无法让 devops login 命令工作。

我不确定登录是问题还是其他问题。其他人见过这样的情况吗?想尝试什么?

【问题讨论】:

  • az devops login 使用个人访问令牌登录:docs.microsoft.com/en-us/azure/devops/cli/…
  • 嗨,谢谢,我通过 $env:AZURE_DEVOPS_EXT_PAT = '3aggid....' 设置了我的 PAT 并尝试登录,但它挂起。我能够使用 CLI DevOps 命令(az 管道等),因此只有 REST 接口失败。

标签: azure-cli2


【解决方案1】:

我已经解开了大部分混乱,希望其他人能从中受益。

首先,挂起。我从未修复此问题,因此它可能仍与我在下面讨论的解决方法有关。

修复#1:我没有传递--resource,而是在它上面加注并在标题中传递了一个授权令牌。 “/_apis/build/builds?api-version=6.0-preview.6”现在请求方法与此授权一起使用。

修复 #2:我正在处理两个不同的 REST 请求,一个检索一个简单的构建列表,另一个检索一个简单的发布定义列表。发布定义 API 请求的基本 url 不同,它需要“vsrm.dev.azure.com”(我不知道为什么)。

$tokeninfo = az account get-access-token | convertfrom-json
$token = $tokeninfo.accessToken

$uribase = "https://vsrm.dev.azure.com/{org}/{project}"
$requestpath = "/_apis/release/definitions?api-version=6.0-preview.4"
$uri = $uribase+$requestpath
$authheader = "Authorization=Bearer " + $token
az rest --uri $uri --headers $authheader

$uribase = "https://dev.azure.com/{org}/{project}"
$requestpath = "/_apis/build/builds?api-version=6.0-preview.6"
$uri = $uribase+$requestpath
$authheader = "Authorization=Bearer " + $token
az rest --uri $uri --headers $authheader

希望这对某人有所帮助

【讨论】:

    猜你喜欢
    • 2022-07-03
    • 2018-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-25
    • 2019-08-15
    • 2019-02-16
    相关资源
    最近更新 更多