4

我知道我可以将GetHttpCode()的结果类型转换为HttpStatusCode,但我不喜欢对枚举进行类型转换。特别是因为 MSDN 文档没有明确说明枚举的值始终是确切对应的 http 状态代码。

我觉得GetHttpCode()应该只返回HttpStatusCode

我应该停止抱怨和打字吗?

catch(HttpException ex)
{
    switch((HttpStatusCode)ex.GetHttpCode())
    {
        case HttpStatusCode.NotFound: 
            // Do stuff...
            break;
        // More cases...
    }
}

编辑:请注意HttpWebResponse.StatusCode 类型为HttpStatusCode

4

5 回答 5

9

值得注意的是,HTTP 允许自定义状态代码,因此不能保证枚举将包含您的响应中的值。出于这个原因,API 返回int值而不是尝试使用枚举是明智的。

于 2012-10-01T12:47:19.797 回答
1

HTTP 状态代码不必来自固定列表,尽管它们通常这样做。使用枚举很方便。要求枚举是错误的。

于 2012-10-01T12:47:30.770 回答
0

响应包含错误代码的整数值。int 是实际的错误代码。枚举允许错误代码的“友好”表示。

于 2012-10-01T12:43:48.090 回答
0

我应该停止抱怨和打字吗?

是的。或者使用相应的整数值。

于 2012-10-01T12:44:04.550 回答
0

是的,你应该这样做。最重要的是,因为您自己提供的代码使您无法同时使用任何整数值或状态数字。所以从技术上讲,枚举值是否与状态编号相对应并不重要。

于 2012-10-01T12:46:51.567 回答