我有一個處理HTTP POST和GET的自定義Http處理程序。我用client.UploadFile("", file);
即迫使HTTP POSTwebclient問題:期望失敗?
System.Net.WebException: The remote server returned an error: (417) Expectation failed.
at System.Net.WebClient.UploadFile(Uri address, String method, String fileName)
當拿到項目一個單獨的獨立的服務器上的工作現在需要把它在生產...
using (var client = new WebClient())
{
client.Credentials = CredentialCache.DefaultCredentials;
client.UploadFile("serverlocation:port", fileToUpload);
}
出於某種原因,現在怎麼辦這可以嗎?我知道代碼有效,那還有什麼?也許服務器阻止HTTP POST請求?
我曾嘗試加入:
ServicePointManager.Expect100Continue = false;
但沒有成功,雖然我不是100%肯定這個地方應該代碼之前,我想我使用WebClient的
前
編輯0:
我剛纔read如下:
由於舊的實現的存在,該協議允許 模糊的情況,其中一個客戶端可以發送「期望值:100- 繼續」而不接收任何一個417(預期失敗)狀態 或100(繼續)狀態。因此,當客戶端將這個 標題字段發送到源服務器(可能通過代理服務器)時,它從未見過100(繼續)狀態,客戶端在發送請求主體之前不應該等待 無限期。
我相信這個請求是通過代理,這可能與問題有關。
編輯1:
相信這個問題必須是具有100繼續,因爲,使用招來看看到底是什麼我的應用程序與WebClient.UploadFile
發送表明這一點:
POST http://XXX.XXX.XXX.XXX:8091/file.myhandledextension HTTP/1.1
Content-Type: multipart/form-data; boundary=---------------------8ccd1eb03f78bc2
Host: XXX.XXX.XXX.XXX:8091
Content-Length: 4492
Expect: 100-continue
儘管已經放該行:ServicePointManager.Expect100Continue = false;
之前的使用說明。我不認爲這條線實際上起作用。