现象
尝试验证自动 Azure RM 服务连接时,可能会收到以下错误消息:
未能获取 Azure DevOps Service 访问令牌,缓存值无效。
调试步骤
跟踪中将看到 POST 调用的以下响应:
{"authorization":{"parameters":{"tenantid":"xxxxxx49-XXXXcexxxxxx","serviceprincipalid":"xxxxxx7e-XXXX-027xxxxxxxxx","authenticationType":"spnKey","serviceprincipalkey":null,"**accesstoken":null**},"scheme":"ServicePrincipal"},"created}
原因
从 UI 运行服务连接更新调用时,请求正文 PUT
包含一个 accesstoken = null
条目。 如果将有效负载与操作任一端的工作服务连接进行比较 PUT
,则看不到此条目。 AccessToken
如果属性存在于服务连接 UI 对象中,它应具有有效值(如 GUID)。 它不应为空或 null。
解决方法
转到“服务连接”页,然后选择受影响的服务连接。
选择“编辑” 。
按 F12,然后打开网络跟踪窗口。 如果可能,请在“网络”选项卡下的面板中选择“禁用缓存”选项。
更新说明。
选择“保存”按钮。
如果系统提示你进行授权,请输入所需的凭据。 在网络跟踪中,现在可以看到 PUT 调用来更新失败的服务连接。
打开 PUT 调用详细信息,并通过选择“有效负载”视图源>来复制请求有效负载>。选择内容并复制内容。
从 PUT 调用详细信息中,还复制授权标头值。
在请求正文中 ,删除授权标头下的 accesstoken:null (或 accesstoken:'')属性。
复制更新 的请求有效负载,并通过运行以下 API,使用 Postman(或任何其他 REST 工具)进行服务连接更新 PUT API 调用。 进行此调用时,请确保提供之前复制的授权标头。
PUT - https://dev.azure.com/{organization}/_apis/serviceendpoint/endpoints/{endpointId}?api-version=6.0-preview.4
有关详细信息,请参阅 终结点 - 更新服务终结点。