1. 程式人生 > >HTTP 417錯誤

HTTP 417錯誤

前幾天一個店面反映,在登陸客戶端的時候提示同步時鐘失敗(在客戶端執行時會呼叫webservice),當時我以為又是網路質量差的問題,就沒管。結果過了兩天他們又打電話來催,說還是同步時鐘失敗。連上去看了一下日誌檔案發現異常資訊是HTTP錯誤417,而不是常見的無法連線到遠端伺服器。當時就覺得奇怪,檢查了一下ie沒有使用代理(在設定代理的情況下也有可能出現訪問失敗),後來在google裡面搜了一下,發現有好多人也遇到過類似的問題。
解決方案:在呼叫webservice方法之前加
System.Net.ServicePointManager.Expect100Continue = false;


原因:expect100Continue,是用在 客戶端向 WEB SERVER 端,傳送POST資料的情形下,在POST資料傳送前,客戶端會先發送一個HEAD指令到SERVER,SERVER如果返回100,則客戶端才真正的POST資料到SERVER,否則就表示SERVER端不存在接受者在 ,IIS 下,是沒問題的。IIS都會返回100狀態, 但是,對於某些版本,並無這個約束,也就是說,不會理會100的這個請求,所以就導致了不能正常POST資料上去了。