ASP.NET MVC处理请求错误

时间:2016-04-14 13:35:17

标签: c# asp.net asp.net-mvc

在我的.Net MVC应用程序中,我需要处理服务器端验证。如果请求有问题我会得到这个:

{
   "validationMessage": message
}

,StatusCode = 200。 否则我当然会得到适当的电话回复。我的问题是我有麻烦检查验证消息然后反序列化响应(我总是在那里得到null虽然fiddler告诉我响应回来了)。

 public static async Task<Response<T>> Response<T>(HttpResponseMessage response)
    {
        var res = new Response<T>();

        if (response.IsSuccessStatusCode)
        {
            //check for validation messages
            var serverErrorInfo = await response.Content.ReadAsAsync<ServerError>();
            if (serverErrorInfo.ValidationMessage != null)
            {
                res.ErrorInfo = new ErrorInfo(serverErrorInfo.ValidationMessage);
            }
            else
            {
                var result = await response.Content.ReadAsAsync<T>();
                res.IsSuccess = true;
                res.Result = result;
            }
            return res;
        }

我做错了什么?在第一次尝试将其作为ServerError读取后,响应是否被释放?由于我使用泛型,我无法首先检查是否有响应,而不是读取validationMessage。
ServerError代码:

 [JsonObject]
public class ServerError
{
    public string validationMessage{ get; set; }
}

2 个答案:

答案 0 :(得分:2)

可能是反序列化问题。您是否在json响应中尝试使用大写字母V的ValidationMessage?另外,serverErrorInfo是否完全为null,或者只是属性ValidationMessage为null?你可以在反序列化到ServerError之前检查response.Content的值是什么吗?

答案 1 :(得分:0)

最后解决方案只是使用了一些丑陋的代码:

var serverErrorInfo = JsonConvert.DeserializeObject<ServerError>(await response.Content.ReadAsStringAsync());

我不确定为什么ReadAsAsync在那里失败。