2011-07-22 28 views
19

我有一種方法,使用PUT請求,將Overwrite Header設置爲T(覆蓋),使用WebRequest將文件上載到Sharepoint 2010列表/文件夾。使用.NET WebRequest將文件上載到SharePoint時出現409 /衝突HTTP錯誤的原因?

當上傳多個文件(方法被調用多次)時,某些請求將失敗並出現409衝突HTTP錯誤。

我已經使用了Google,並且它似乎最常見的原因是試圖影響/更新不存在的文件(如將請求URL設置爲不帶文件名的路徑)。但是,情況並非如此。如果衝突與已存在的文件有關,我添加了代碼以便在上傳文件之前刪除文件,並且我仍然獲得了409個文件。

有沒有人收到過這種類型的錯誤,如果有的話,你能告訴我你是如何修復它的?根源是什麼?任何幫助是極大的讚賞。由於

回答

19

由於沒有答案被張貼,我發現下面here

Web服務器(運行網站)認爲,客戶端提交的請求(例如Web瀏覽器或我們的CheckUpDown機器人)不能完成,因爲它與已經建立的一些規則相沖突。例如,如果您嘗試將文件上載到比已存在的文件更早的Web服務器,則可能會收到409錯誤 - 這會導致版本控制衝突。

有人在similar question right here on stackoverflow說,得到的答覆是:

我有,當我引用文檔 庫的網址,而不是目標文件本身這個問題。

即嘗試http://server name/document library name/new file name.doc

但我100%肯定這不是我的情況,因爲我檢查的WebRequest的URI屬性幾次和URI是完整的文件名和路徑中的所有文件夾存在在SharePoint站點上。

無論如何,我希望這可以幫助別人。

1

在使用webdav和http web請求上傳文件時,我發現了兩件值得一提的事情。首先,對於我使用的提供商,我必須在提供商網址的末尾追加文件名。我要在URL中追加端口號。我還將Request方法設置爲PUT而不是POST。

例如:

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

我們也得到同樣的錯誤,而我們正試圖在毫秒訪問相同的資源。就像如果我嘗試POST某些數據到www.abc.com/blog並以毫秒爲單位,另一個請求也將從相同的用戶獲得相同的資源,即www.abc.com/blog。所以它會給出409錯誤。

相關問題