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

Mat*_*els 4 c# http http-status-codes

我知道我可以从强制转换的结果GetHttpCode()HttpStatusCode,但我不喜欢类型转换枚举.特别是因为MSDN doc没有明确说明枚举的值总是精确对应的http状态代码.

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

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

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

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

Dan*_*zey 8

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