贝尔格莱德SqlClient->响应不会完成

时间:2019-12-23 14:54:18

标签: c# json sql-server webapi

我要做的只是从存储过程(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)参数使用存储的proc将JSON直接写入数据库(存储的proc代码不是我的问题)。

1 个答案:

答案 0 :(得分: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;

    }