当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;
    }
}

10-06 14:32