檢查狀態WebException.Status
這會讓你知道發生了什麼特定的web異常。
更新:嘗試將request.Method = "HEAD";
更改爲GET並嘗試。
嘗試使用不可用(404)的網址,比較狀態。 檢查是否有任何內容阻止了您的請求。
這是我如何管理我的代碼,我只處理使用ftp特定狀態。'CommStatus'是一個錯誤代碼ENUM在整個應用程序中可用。
catch (WebException ex)
{
FtpWebResponse response = (FtpWebResponse)ex.Response;
switch(response.StatusCode)
{
case FtpStatusCode.ActionNotTakenFileUnavailable:
return CommStatus.PathNotFound;
case FtpStatusCode.NotLoggedIn:
return CommStatus.AuthenticationError;
default: return CommStatus.UnhandledException;
}
}
以下是WebException的可用狀態。
CacheEntryNotFound
此API支持產品的基礎結構,不適合直接在代碼中使用。未找到指定的緩存條目。
ConnectFailure
此API支持產品的基礎結構,不適合直接在代碼中使用。運輸級別不能聯繫遠程服務點。
ConnectionClosed
此API支持產品的基礎結構,不適合直接在代碼中使用。連接過早關閉。
KeepAliveFailure
此API支持產品的基礎結構,不適合直接在代碼中使用。用於指定Keep-alive標頭的請求的連接意外關閉。
MessageLengthLimitExceeded
此API支持產品的基礎結構,不適合直接在代碼中使用。在發送請求或從服務器接收響應時收到超出指定限制的消息。
NameResolutionFailure
此API支持產品的基礎結構,不適合直接在代碼中使用。名稱解析器服務無法解析主機名。
待定 此API支持產品基礎結構,不適合在代碼中直接使用。內部異步請求正在等待處理。
PipelineFailure 此API支持產品基礎結構,不適合在代碼中直接使用。該請求是一個piplined請求,並且在收到響應之前關閉了連接。
ProtocolError
此API支持產品的基礎結構,不適合直接在代碼中使用。從服務器收到的響應已完成,但顯示協議級錯誤。例如,HTTP協議錯誤(如401拒絕訪問)將使用此狀態。
ProxyNameResolutionFailure
此API支持產品的基礎結構,不適合直接在代碼中使用。名稱解析程序服務無法解析代理主機名。
ReceiveFailure
此API支持產品的基礎結構,不適合直接在代碼中使用。沒有收到遠程服務器的完整響應。
RequestCanceled 此API支持產品基礎結構,不適合在代碼中直接使用。該請求被取消,WebRequest.Abort方法被調用,或發生了無法分類的錯誤。這是狀態的默認值。
RequestProhibitedByCachePolicy
此API支持產品的基礎結構,不適合直接在代碼中使用。緩存策略不允許請求。通常,這發生在請求不可緩存且有效策略禁止將請求發送到服務器時發生。如果請求方法暗示存在請求主體,請求方法需要與服務器直接交互,或請求包含條件標頭,則可能會收到此狀態。
RequestProhibitedByProxy
此API支持產品的基礎結構,不適合直接在代碼中使用。代理不允許此請求。
SecureChannelFailure
此API支持產品的基礎結構,不適合直接在代碼中使用。使用SSL建立連接時發生錯誤。
SendFailure 此API支持產品基礎結構,不適合在代碼中直接使用。完整的請求無法發送到遠程服務器。
ServerProtocolViolation 此API支持產品基礎結構,不適合在代碼中直接使用。服務器響應不是有效的HTTP響應。
成功 該API支持產品基礎架構,不適合在代碼中直接使用。沒有遇到任何錯誤。
超時 此API支持產品基礎結構,不適合在代碼中直接使用。在請求超時期間未收到任何回覆。
TrustFailure
此API支持產品的基礎結構,不適合直接在代碼中使用。服務器證書無法驗證。
不明錯誤
此API支持產品的基礎結構,不適合直接在代碼中使用。發生未知類型的例外。
更多細節在這裏:https://msdn.microsoft.com/en-us/library/system.net.webexceptionstatus(v=vs.110).aspx
究竟是什麼'WebException'? – Equalsk
什麼是錯誤? –
如果你對異常感興趣,不要使用'try-catch'。在這種情況下,你是,因爲你想知道它是什麼。十比一是它是您公司的代理驗證錯誤。 – CodeCaster