我要做的只是从存储过程(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代码不是我的问题)。
答案 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;
}