0

我想要做的只是从存储过程(MS SQL)向Web API调用者发送一个(大)json输出(用于json路径)。我使用http://jocapc.github.io/Belgrade-SqlClient/aspnet.html来请求 SQL Server。这是因为我读了这篇文章:https ://www.codeproject.com/Articles/1106622/Building-REST-services-with-ASP-NET-Core-Web-API-a Firefox 收到结果(纯文本,无格式json),但请求永远不会结束。PostMan 没有显示任何结果。

    public HttpResponseMessage Get(int rows)
    {

        ICommand cmd = new Command(connStr);

        HttpResponseMessage response = Request.CreateResponse();
        response.Content = new PushStreamContent(async (stream, content, context) => 
        {
            await cmd
            .Proc("cuh.GetADDRESSES")
            .Param("@rows", rows)
            .Stream(stream, "[]");
        }, "application/json");

        //response.Headers.TransferEncodingChunked = true;

        return response;

    }

我读到,当请求结束时流未关闭时,可能会发生这种情况。但我不知道在这种情况下该怎么做。任何其他处理来自存储过程的 json 输出的工作方法将不胜感激。另一个方向也一样:通过 nvarchar(max) 参数将 JSON 直接写入带有存储过程的数据库(存储过程代码不是我的问题)。

4

1 回答 1

0

比预期容易得多:

    public HttpResponseMessage Get(int rows)
    {

        ICommand cmd = new Command(connStr);

        HttpResponseMessage response = Request.CreateResponse();
        response.Content = new PushStreamContent(async (stream, content, context) => 
        {

            await cmd
            .Proc("cuh.GetADDRESSES")
            .Param("@rows", rows)
            .Stream(stream, "[]");

            stream.Dispose();//This is the missing part to get it work

        }, "application/json");

        return response;

    }
于 2019-12-28T12:46:22.310 回答