检查状态 WebException.Status
这会让您知道发生了什么特定的网络异常。
更新:尝试更改request.Method = "HEAD";
to GET并尝试。
尝试使用不可用 (404) url,比较状态. 检查是否有任何东西阻止了您的请求。
这就是我在代码中进行管理的方式,我仅使用 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 的可用状态。
未找到缓存条目
此 API 支持产品基础架构,并不适合直接从您的代码中使用。未找到指定的缓存条目。
连接失败
此 API 支持产品基础架构,并不适合直接从您的代码中使用。无法在传输级别联系远程服务点。
连接关闭
此 API 支持产品基础架构,并不适合直接从您的代码中使用。连接过早关闭。
保活失败
此 API 支持产品基础架构,并不适合直接从您的代码中使用。指定 Keep-alive 标头的请求的连接意外关闭。
超出消息长度限制
此 API 支持产品基础架构,并不适合直接从您的代码中使用。发送请求或从服务器接收响应时收到的消息超出了指定的限制。
名称解析失败
此 API 支持产品基础架构,并不适合直接从您的代码中使用。名称解析程序服务无法解析主机名。
Pending此 API 支持产品基础架构,并不适合直接从您的代码中使用。内部异步请求正在等待处理。
管道故障此 API 支持产品基础架构,并不适合直接从您的代码中使用。该请求是管道请求,并且在收到响应之前连接已关闭。
协议错误
此 API 支持产品基础架构,并不适合直接从您的代码中使用。从服务器收到的响应已完成,但指示协议级错误。例如,诸如 401 访问被拒绝之类的 HTTP 协议错误将使用此状态。
代理名称解析失败
此 API 支持产品基础架构,并不适合直接从您的代码中使用。名称解析程序服务无法解析代理主机名。
接收失败
此 API 支持产品基础架构,并不适合直接从您的代码中使用。未从远程服务器收到完整响应。
请求已取消此 API 支持产品基础架构,并不适合直接从您的代码中使用。请求已取消、调用了 WebRequest.Abort 方法或发生了不可分类的错误。这是状态的默认值。
通过缓存策略禁止请求
此 API 支持产品基础架构,并不适合直接从您的代码中使用。缓存策略不允许该请求。一般来说,当请求不可缓存并且有效策略禁止向服务器发送请求时,就会发生这种情况。如果请求方法暗示存在请求正文、请求方法需要与服务器直接交互或请求包含条件标头,您可能会收到此状态。
代理请求禁止
此 API 支持产品基础架构,并不适合直接从您的代码中使用。代理不允许此请求。
安全通道故障
此 API 支持产品基础架构,并不适合直接从您的代码中使用。使用 SSL 建立连接时出错。
发送失败此 API 支持产品基础架构,并不适合直接从您的代码中使用。无法将完整的请求发送到远程服务器。
服务器协议违规此 API 支持产品基础架构,并不适合直接从您的代码中使用。服务器响应不是有效的 HTTP 响应。
Success此 API 支持产品基础架构,并不适合直接从您的代码中使用。没有遇到错误。
Timeout此 API 支持产品基础架构,并不适合直接从您的代码中使用。在请求超时期间未收到任何响应。
信任失败
此 API 支持产品基础架构,并不适合直接从您的代码中使用。无法验证服务器证书。
未知错误
此 API 支持产品基础架构,并不适合直接从您的代码中使用。发生未知类型的异常。
更多详细信息请参见此处:https://msdn.microsoft.com/en-us/library/system.net.webexceptionstatus(v=vs.110).aspx https://msdn.microsoft.com/en-us/library/system.net.webexceptionstatus(v=vs.110).aspx