【问题标题】:Complete request execution from inner method in Web API从 Web API 中的内部方法完成请求执行
【发布时间】:2020-01-07 01:18:51
【问题描述】:

我有基于 ASP.NET Core 2.2 的 API,我不想从处理请求的公共方法返回结果,而是从内部方法返回结果。

public class UsersController : MainController
        {
            [HttpGet("{id:int}")]
            public IActionResult Get(int id)
            {
                var value = GetSomeValue();
            }

            private string GetSomeValue()
            {
                // and here I want to return result to user not even returning result to calling method `Get`
                return "";
            }
        }

我可以通过HttpContext.Response.StatusCode 将状态代码设置为响应,并且我知道如何为响应设置正文,但我也不知道是否可以从GetSomeValue 方法向用户返回响应。可能以某种方式使用HttpContext

【问题讨论】:

    标签: asp.net-core


    【解决方案1】:

    如果这是你要的,我不是真的,但这是我的两分钱:

    我不想从处理请求的公共方法返回结果,而是从内部方法返回结果。

    这不是微不足道的,如果我做对了,您要问的是操作 HttpContext 以便您在内部方法上开始响应,而不是从控制器返回,这是正确的方法。

    我不知道你为什么要这样做,但我想你可以得到一些建议here

    无论如何我不明白你为什么不这样做:

    return Ok(value);
    

    喜欢:

    public class UsersController : MainController
    {
        [HttpGet("{id:int}")]
        public IActionResult Get(int id)
        {
            var value = GetSomeValue();
            return Ok(value);
        }
        private string GetSomeValue()
        {
            // and here I want to return result to user not even returning result to calling method `Get`
            return "";
        }
    }
    

    【讨论】:

    • 这不是我想做的link。我可以编写响应正文,但不能通过IActionResult 将其返回。我试图通过在内部小方法中进行一些操作来最小化处理请求的控制器方法。现在我知道从内部方法返回结果还不清楚,所以这不是一个好习惯,但无论如何我很感兴趣,如果可能的话
    猜你喜欢
    • 1970-01-01
    • 2023-03-28
    • 1970-01-01
    • 2020-11-14
    • 2019-01-19
    • 1970-01-01
    • 2018-09-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多