为什么HttpException.GetHttpCode()返回一个int而不是一个System.Net.HttpStatusCode?

时间:2012-10-01 12:39:07

标签: c# http http-status-codes

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

我认为GetHttpCode()应该返回HttpStatusCode

我应该停止抱怨和强制转型?

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

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

5 个答案:

答案 0 :(得分:8)

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

答案 1 :(得分:1)

HTTP状态代码不一定来自固定列表,但通常会这样做。使用枚举是一种便利。要求枚举是错误的。

答案 2 :(得分:0)

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

答案 3 :(得分:0)

  

我应该停止抱怨和强制转型?

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

答案 4 :(得分:0)

是的,你应该那样做。最重要的是,由于您自己提供的代码使您无法使用任何整数值或状态编号。从技术上讲,无论enum-value是否与状态数相对应都无关紧要。