2

我有一个 APS.NET Core 2.0 API,我正在为其编写测试客户端。测试客户端是一个控制台应用程序。我希望能够读取并显示从可能处于模型状态的 API 调用返回的任何错误。

在我的 API 中,如果模型无效,我会返回模型以及状态 422,如下所示;

        if (!ModelState.IsValid)
        {
            return new UnprocessableEntityObjectResult(ModelState);
        }

UnprocessableEntityObjectResult 只是一个辅助类,如下所示;

public class UnprocessableEntityObjectResult : ObjectResult
 {
     public UnprocessableEntityObjectResult(ModelStateDictionary modelState)
          : base(new SerializableError(modelState))
     {

         if (modelState == null)
         {
             throw new ArgumentNullException(nameof(modelState));
         }

         StatusCode = 422;
     }
 } 

我的意图是在错误时将模型状态返回给客户端。

我的测试客户端是一个控制台应用程序,我正在寻找一种方法来检查模型状态并列出任何错误。

在我的控制台应用程序中,我有以下从 Main 调用的方法;

    static async Task CreateUploadRecordAsync()
    {

        httpClient.BaseAddress = new Uri("https://localhost:44369");
        httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
        string relativeUrl = "/api/upload";

        HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, relativeUrl);

        HttpResponseMessage response = new HttpResponseMessage();


        using (var content = new MultipartFormDataContent())
        {
            //Add content values here...
            request.Content = content;
            response = await httpClient.SendAsync(request);
        }

        if (response.IsSuccessStatusCode)
        {
            string result = response.Headers.Location.ToString();
            Console.WriteLine("Success:\n");
            Console.WriteLine($"New Record Link: [{result}]\n");
        }
        else
        {

            //Add code here to get model state from response

            Console.WriteLine($"Failed to create new upload record. Error:  {response.ReasonPhrase}\n");
        }

    }

我正在寻找一个示例,说明如何提取“/在此处添加代码以从响应中获取模型状态”注释之后存在的模型状态。

有任何想法吗?

4

0 回答 0