【问题标题】:Fetch request middleware in kestrel returning net::ERR_INCOMPLETE_CHUNKED_ENCODING在返回 net::ERR_INCOMPLETE_CHUNKED_ENCODING 的红隼中获取请求中间件
【发布时间】:2019-08-09 04:01:51
【问题描述】:

我正在尝试解决我的 kestrel 中间件上的两个错误,该中间件旨在处理获取请求并返回一些 JSON。 (我对使用 MVC 不感兴趣)

代码有效,但我想删除这两个错误:

在 chrome 中我得到这个错误:

net::ERR_INCOMPLETE_CHUNKED_ENCODING 200(正常)

在红隼中我得到这个错误:

“响应已经开始,无法设置状态码”

        public void Configure(
            IApplicationBuilder app,
            IHostingEnvironment env,
            ILoggerFactory loggerFactory)
            {
    // some startup stuff...

        app.Use(async (context, next) =>
                {
                    if (context.Request.Path.HasValue && context.Request.Path.Value.Contains("searchjsfetch/"))
                    {
                        await context.Response.WriteAsync(JsonConvert.SerializeObject(simpleObject), Encoding.UTF8);
                    }
    })
}

在打字稿中我这样获取:

fetch(`${hostDomain}searchjsfetch/${email}/2/3`)
                    .then((response) => {
                    response.body.getReader().read().then((c) => {
                            return new TextDecoder("utf-8").decode(c.value);
                        });
                    })

【问题讨论】:

  • 您希望获取什么?中间件是您可以注入到请求/响应管道中的东西,但通常您不会只使用中间件来处理完整的请求。
  • 只是一些 JSON 数据
  • 您能否详细说明您对 MVC 的担忧是什么让您想避免它?

标签: asp.net-core kestrel-http-server


【解决方案1】:

使用 ASP.NET Core,您将“使用 MVC”(例如:在您的 startup.cs 中),但这并不意味着您必须使用 MVC(视图等)...您将使用 MVC命名空间等,但您仍然可以返回 JSON 数据。除了传统的 MVC 视图响应之外,还有几个针对 API 的类 -

第一个是 ControllerBase - https://docs.microsoft.com/en-us/dotnet/api/microsoft.aspnetcore.mvc.controllerbase?view=aspnetcore-2.2

可能感兴趣的第二个类是 ApiControllerAttribute

看看这篇文章 - https://docs.microsoft.com/en-us/aspnet/core/web-api/?view=aspnetcore-2.2

【讨论】:

  • 如果您有兴趣,我想出了如何在没有 MVC 的情况下做到这一点
【解决方案2】:

那是愚蠢的,我有一个额外的

await next();

导致问题的原因

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-11
    • 1970-01-01
    • 2018-07-08
    • 2016-02-24
    • 2017-03-25
    • 2021-08-18
    • 1970-01-01
    相关资源
    最近更新 更多