微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

无法检索“主页/Page1/Page2/SpecificPage”中的 Azure Wiki 页面返回的 HTTP 代码是“404” 关于这张票的最新消息:

如何解决无法检索“主页/Page1/Page2/SpecificPage”中的 Azure Wiki 页面返回的 HTTP 代码是“404” 关于这张票的最新消息:

问题:

“无法在“主页/Page1/Page2/SpecificPage”中检索 Azure Wiki 页面。返回的 HTTP 代码是“404”。”

发生这种情况时:

将 Wiki 从 Azure DevOps Server 2020 迁移到“Azure DevOps Services”。 当使用完全相同的作业/任务执行管道时,在对包含相关信息的 wiki 执行 REST API 调用输出错误

提供和应用的解决方案:

为“Azure DevOps Groups”启用大量权限 从“Wiki Security”启用大量权限

影响:

阻止我们向 Azure DevOps 服务迁移 管道在尝试从管道中检索数据时卡住

满足 ADO 服务的新 API 主体:

Write-Host "$($env:SYstem_TEAMFOUNDATIONSERVERURI)"
Write-Host "$($env:SYstem_TEAMPROJECTID)"
Write-Host "$(wiki-identifier)"
Write-Host "$(all-sites-wiki-page-path)"
Write-Host Set authorization headers
$Header = @{
Authorization = 'Bearer ' + [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(":$($env:SYstem_ACCEsstOKEN)"))
}
$params = @{ 
'Uri' = 'https://dev.azure.com/MyCollection/MyProject/_apis/wiki/wikis/MyWikiIdentifier.wiki/pages?path=Home%20Page%2FMy%20Wiki%2FPage%2FSubpage&includeContent=true&api-version=5.0'
'Headers' = $Header
'Method' = 'GET'
'ContentType' = 'application/json; charset=ASCII.GetBytes'
}
Write-Host Invoke REST API
$Response = Invoke-RestMethod @params
Write-Host $Response

作为免责声明,我确实使用 Bearer 和 Basic 测试了代码的 Header 部分都失败了:

Authorization = 'Bearer ' + [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(":$($env:SYstem_ACCEsstOKEN)"))

Authorization = 'Basic ' + [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(":$($env:SYstem_ACCEsstOKEN)"))

带有“Bearer”的错误输出

enter image description here

带有“基本”的错误输出

Invoke-RestMethod : {"$id":"1","innerException":null,"message":"TF401019: The Git repository with name or identifier
0ea73a5d-4187-69c6-af49-d9a4573733ta does not exist or you do not have permissions for the operation you are 
attempting.","typeName":"Microsoft.TeamFoundation.Git.Server.GitRepositoryNotFoundException,Microsoft.TeamFoundation.Git.Server","typeKey":"GitRepositoryNotFoundException","errorCode":0,"eventId":3000}
At F:\AzureAgents\ServicesAgent01\_work\_temp\12319456-e600-1234-a872-dd6ed49e758f.ps1:18 char:13
$Response = Invoke-RestMethod @params
       ~~~~~~~~~~~~~~~~~~~~~~~~~
CategoryInfo          : InvalidOperation:
(System.Net.HttpWebRequest:HttpWebRequest) [Invoke-RestMethod],WebException
FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeRestMethodCommand

关于这张票的最新消息:

发现错误来自持久值“SYstem_ACCEsstOKEN” 我确实为 PAT 进行了更改,并且身份验证在“检索 wiki 内容”方面运行良好,但为了简化我们的代码,最好在我们所有的数据中使用持久数据管道而不是 PAT,所以为了做到这一点,需要授予哪些安全值,以便“SYstem_ACCEsstOKEN”在 ADO 服务中工作?

这里是我们当前的安全权限:

管道安全:

Build_Administrators 2

Project_Administrators 3

Project_Collection_Administrators 4

Project_Collection_Build_Administrators 5

Project_Collection_Build_Service 6

在集合安全级别,我的用户属于: “集合名称管理员”。因此我应该在所有项目中传播权限

持久数据令牌“env:SYstem_ACCEsstOKEN”不起作用,我可能错过了什么?真的会感谢社区的帮助

解决方法

此问题的可能原因是您没有更改调用 wiki 页面的 REST API。

在 Azure DevOps Server 中,REST API Pages - Get 是:

GET https://{instance}/{collection}/{project}/_apis/wiki/wikis/{wikiIdentifier}/pages?api-version=5.0

在 Azure DevOps 服务中,REST API Pages - Get Page 是:

GET https://dev.azure.com/{organization}/{project}/_apis/wiki/wikis/{wikiIdentifier}/pages?api-version=6.0
,

有 2 个设置管理系统访问令牌的权限。默认情况下,它的权限在一定程度上受到限制,以防止人们滥用管道来执行他们无法执行的操作。

  1. 管道上的项目/集合设置会将访问令牌限制为管道的父项目或整个项目集合/Azure DevOps 组织。
  2. 服务帐号的权限。这取决于您在 1 中选择的设置。对于项目范围,使用:Your-project-name Build Service (your-collection-name),对于集合范围:Project Collection Build Service (your-collection)

您可以将上述帐户添加到安全组以授予其额外权限。

见:

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?