使用.NET WebRequest将文件上载到SharePoint时出现409/冲突HTTP错误的原因是什么?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (190)

我有一种方法,使用WebRequest将文件上载到Sharepoint 2010列表/文件夹,使用PUT请求,将Overwrite Header设置为T(覆盖)。

当上传多个文件时(方法被多次调用),某些请求会失败并出现409冲突HTTP错误。

我搜索了一下,似乎最常见的原因是试图影响/更新不存在的文件(例如将请求URL设置为不带文件名的路径)。但是,情况并非如此。如果冲突与已存在的文件有关,我添加了代码以便在上传文件之前删除文件,并且我仍然获得了409个文件。

有没有人收到过这种类型的错误,如果有的话,你能告诉我你是如何修复它的?根源是什么?

提问于
用户回答回答于

由于没有发布答案,我在这里找到了以下内容:

Web服务器(运行Web站点)认为客户端(例如Web浏览器或我们的CheckUpDown机器人)提交的请求无法完成,因为它与已经建立的某些规则冲突。例如,如果您尝试将文件上载到比已存在的文件更早的Web服务器,则可能会出现409错误,从而导致版本控制冲突。

当我引用文档库的url而不是目标文件本身时,我遇到了这个问题。 即尝试 http://server name/document library name/new file name.doc

不过,我100%肯定这不是我的情况,因为我多次检查WebRequest的URI属性,并且URI已完成文件名,路径中的所有文件夹都存在于SharePoint站点上。

无论如何,我希望这可以帮助别人。

用户回答回答于

使用webdav和http web请求上传文件时,我发现了两件值得一提的事情。首先,对于我使用的提供商,我必须在提供商网址的末尾追加文件名。我要在URL中追加端口号。我还将Request方法设置为PUT而不是POST。

例子:

string webdavUrl = "https://localhost:443/downloads/test.pdf";
request.Method = "PUT";

扫码关注云+社区

领取腾讯云代金券