409:使用 REST API 在 Artifactory 中复制工件时发生冲突错误
Posted
技术标签:
【中文标题】409:使用 REST API 在 Artifactory 中复制工件时发生冲突错误【英文标题】:409: conflict error while copying Artifacts in Artifactory using REST API 【发布时间】:2018-11-03 04:58:24 【问题描述】:我正在尝试通过 PowerShell 在 Artifactory 的同一存储库中制作工件的副本。下面是我用来实现这一点的代码。我得到
"Invoke-RestMethod: The remote server returned an error: (409) Conflict."
执行此代码时出错。
调用-RestMethod -Uri
"http://server/artifactory/api/copy/repoName/Package1.nupkg?to=/repoName/Package2.nupkg" -Method POST -UseDefaultCredentials
感谢任何帮助!
【问题讨论】:
使用 PUT 方法。 POST 用于创建。 PUT 用于创建或更新。 谢谢曼莫汉!我尝试使用 PUT 而不是 POST 并得到“Invoke-RestMethod:远程服务器返回错误:(405)方法不允许。”错误。 【参考方案1】:我在尝试使用文件夹时遇到了这个问题。 如果您也是这种情况,请先尝试 PUT 文件夹路径,并确保对此调用和 POST 副本都进行身份验证:
$token = [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes("$user:$apikey"));
# Create path first
Invoke-WebRequest -Uri "https://server/artifactory/targetRepo/targetPath" `
-Method PUT `
-Headers @ 'Authorization' = "Basic $($token)"
# Copy item
Invoke-WebRequest -Uri "http://server/artifactory/api/copy/repoName/path/Package1.nupkg?to=/targetRepo/targetPath/Package2.nupkg" `
-Method POST `
-Headers @ 'Authorization' = "Basic $($token)"
【讨论】:
这让情况变得更糟。它创建一个零大小的工件“targetPath”而不是文件夹【参考方案2】:我知道这是一个老问题,但是当我尝试将工件复制到已经存在的目的地时遇到了这个错误(基本上,用另一个副本替换具有完全相同名称的工件)。我的用户没有 repo 的删除权限。确切的错误文本是:
"messages" : [
"level" : "ERROR",
"message" : "User doesn't have permissions to override <artifact-name>. Needs delete permissions."
]
【讨论】:
以上是关于409:使用 REST API 在 Artifactory 中复制工件时发生冲突错误的主要内容,如果未能解决你的问题,请参考以下文章
使用 bigtable 和 python,像 google.api_core.exceptions.Aborted: 409 Error while reading table 这样的异常的原因是啥?
Lync UCWA - 创建应用程序提供 HTTP 409:冲突错误
[Knowledge-based AI] {ud409} Lesson 23: 23 - Learning by Correcting Mistakes