首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >System.Net HttpStatusCode类没有代码422

System.Net HttpStatusCode类没有代码422
EN

Stack Overflow用户
提问于 2015-04-21 11:27:47
回答 3查看 19.5K关注 0票数 46

有没有办法优雅地处理http状态代码422。我在这里寻找最佳实践。我知道HttpStatusCode是一个枚举,所以我尝试这样做:

代码语言:javascript
运行
复制
HttpStatusCode Unprocessable = (HttpStatusCode)422;
if (Response == (HttpStatusCode)422)

但不允许我比较它。我是不是做错了什么?

在运行时添加此状态代码的最佳方式是什么?

EN

回答 3

Stack Overflow用户

发布于 2015-09-30 06:54:32

我使用的是RestSharp,它在HttStatusCode类型的属性中返回服务器响应状态代码,我需要自己检查422响应,但该类型当然不包括它。幸运的是,我仍然能够使用以下代码进行测试:

代码语言:javascript
运行
复制
if(response.StatusCode == (HttpStatusCode)422)
{
    // Do my stuff..
}
票数 41
EN

Stack Overflow用户

发布于 2020-06-06 05:31:53

旧版本的.net没有这个statusCode,但一些新版本有(https://docs.microsoft.com/en-us/dotnet/api/system.net.httpstatuscode?view=netcore-3.1)。如果您使用的是较旧的框架,那么您可以获得响应并检查StatusCode,如下所示(就像尼克所说的那样):

代码语言:javascript
运行
复制
var httpResponseCode = Response as HttpWebResponse;
if (httpResponseCode.StatusCode == (HttpStatusCode)422)
{ //your code here }
票数 4
EN

Stack Overflow用户

发布于 2017-06-22 05:44:39

如果API中的多个操作可能返回422,您可以考虑将检查包装在扩展方法中,如下所示:

代码语言:javascript
运行
复制
    public static bool IsUnprocessableEntityResponse(this HttpResponseMessage message)
    {
        Requires.NotNull(message, nameof(message));

        return (int) message.StatusCode == StatusCodes.Status422UnprocessableEntity;
    }

然后您可以在客户端中使用它,如下所示:

代码语言:javascript
运行
复制
    if (response.IsUnprocessableEntityResponse())
        return Response.UnprocessableEntity<Resource>();

同时也避免在你的源代码中出现422这个神奇的数字。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29762372

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档