当Web服务器使用HTTP 304(未修改)响应HttpWebRequest.GetResponse()
时,GetResponse()
发出了WebException
,这对我来说很奇怪。这是设计使然还是我在这里遗漏了一些明显的东西?
最佳答案
好的,这似乎是一种设计行为,是vexing exception的完美示例。这可以用以下方法解决:
public static HttpWebResponse GetHttpResponse(this HttpWebRequest request)
{
try
{
return (HttpWebResponse) request.GetResponse();
}
catch (WebException ex)
{
if(ex.Response == null || ex.Status != WebExceptionStatus.ProtocolError)
throw;
return (HttpWebResponse)ex.Response;
}
}