Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# System.Net HttpStatusCode类没有代码422_C#_Rest_Windows Phone 8.1_Http Status Codes - Fatal编程技术网

C# System.Net HttpStatusCode类没有代码422

C# System.Net HttpStatusCode类没有代码422,c#,rest,windows-phone-8.1,http-status-codes,C#,Rest,Windows Phone 8.1,Http Status Codes,是否有一种方法可以优雅地处理http状态代码422。我在这里寻找最佳实践。我知道HttpStatusCode是一个枚举,所以我尝试的是 HttpStatusCode Unprocessable = (HttpStatusCode)422; if (Response == (HttpStatusCode)422) 但不允许我比较它。我做错什么了吗 在运行时添加此状态代码的最佳方式是什么 我使用的是RestSharp,它在类型为HttStatusCode的属性中返回服务器响应状态代码,我需要自己检

是否有一种方法可以优雅地处理http状态代码422。我在这里寻找最佳实践。我知道HttpStatusCode是一个枚举,所以我尝试的是

HttpStatusCode Unprocessable = (HttpStatusCode)422;
if (Response == (HttpStatusCode)422)
但不允许我比较它。我做错什么了吗


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

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

if(response.StatusCode == (HttpStatusCode)422)
{
    // Do my stuff..
}

如果API中的一个以上动作可能返回422,则可以考虑以类似于:

的扩展方法包装检查。
    public static bool IsUnprocessableEntityResponse(this HttpResponseMessage message)
    {
        Requires.NotNull(message, nameof(message));

        return (int) message.StatusCode == StatusCodes.Status422UnprocessableEntity;
    }
然后您可以在客户机中使用它,如下所示:

    if (response.IsUnprocessableEntityResponse())
        return Response.UnprocessableEntity<Resource>();
if(response.IsUnprocessableEntityResponse())
返回响应。无法处理的实体();

同时还要避免源代码中的422幻数。

较旧版本的.net没有此状态码,但一些较新版本有()。如果您使用的是较旧的框架之一,那么您可以获得响应并检查状态代码,如下所示(如Nick所说):


只需检查一下,没有422状态代码,这就是我想问的…如果我想使用422,我可以扩展此枚举吗?不,你不能,为什么要扩展响应代码枚举。这是使用标准响应代码。
Respose
真的是一个
HttpStatusCode
?@codesinchaos。让我们假设现在是这样。这不是问题。很酷,很高兴听到这个消息。有道理,因为枚举实际上是一个整数。StatusCodes.Status422UnprocessableEntity是Microsoft.AspNetCore.Http.Abstracts的一部分,以防有人读到它并想知道它在哪里。@Darrell,不错的地方。但对我来说,这似乎不足以作为向附加程序集添加引用的理由。
var httpResponseCode = Response as HttpWebResponse;
if (httpResponseCode.StatusCode == (HttpStatusCode)422)
{ //your code here }