微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在ASP.NET CORE 3.1 Web API中捕获当前状态代码

如何解决如何在ASP.NET CORE 3.1 Web API中捕获当前状态代码

我编写了将结果返回到对象中的方法。我需要捕获当前的HttpStatusCode,而不是创建自己的HttpStatusCode并在返回结果之前保存在以下对象中

[HttpPost]
    public ActionResult createuser([FromBody]UsereDto user)  
    {
        try
        {
            var data = UserService.createuser(user);

            
            var result = new ResultDto
            {
                Ok = true,Data = data,Error = "No",StatusCode = HttpStatusCode. ???????????????
            };

            
            return Ok(result);
        }
        catch(Exception exp)
        {
            var errorResult = new ResultDto
            {
                Ok = false,Data = null,Error = exp.ToString()
                StatusCode =  ????????????
            };

            return Ok(errorResult);
        }
    }

解决方法

由于HTTP响应已经包含了HTTP状态,所以我不是100%不确定要实现什么或为什么要这样做,因此在JSON响应中另外返回它不会添加比已有信息更多的信息。

但是您可以对状态进行硬编码,因为示例中的状态始终为200,除非响应序列化过程中出现错误等。

???行之后,您确实返回了一个Ok()响应,该响应将返回200。

,

无法捕获现有的HTTP代码 您可以自己手动输入http代码。

例如: 创建代码= 201 错误代码= 400 错误请求:301 未找到:404

return StatusCode(200,object);

您也可以通过这种方式返回它。

,

您无需在dto中创建自己的状态代码...

return Ok(errorResult);将返回200错误,这是错误的。 相反,您应该返回BadRequestResult(errorResult),并且ui会收到包含DTO的500个结果。

此外,您可以返回return Ok(result);而不是OkResult(result),这将返回200,其中还包含您的DTO ...

此外,您还应该在单独的类中将Dto创建提取到它自己的方法中,以遵循DRY和单一职责原则。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。