希望有人能在以下方面启发我.
我有一个客户端会向控制器端点发出请求(没有视图,c#到c#甚至C++以后).该控制器必须发送响应,因为它以json异步方式获取响应(将json1发送到客户端,然后发送json2,然后发送json3直到它关闭连接或发送空终止文本或类似文件).目的是将结果流回客户端,以便在服务器仍然有效时开始处理.
我的控制器端点如下所示:
[HttpGet("testStream")]
public async Task testStream()
{
var response = HttpContext.Response;
response.Headers[HeaderNames.TransferEncoding] = "chunked";
for (var i = 0; i < 10; ++i)
{
await response.WriteAsync($"6\r\ntest {i}\r\n");
await response.Body.FlushAsync();
await Task.Delay(1 * 1000);
}
await response.WriteAsync("0\r\n\r\n");
await response.Body.FlushAsync();
}
Run Code Online (Sandbox Code Playgroud)
我的测试看起来像这样:
static async void DownloadPageAsync()
{
// ... Target page.
string page = "http://localhost:8080/api/Stream/testStream";
Console.WriteLine("test");
while (!Debugger.IsAttached) Thread.Sleep(500);
// ... Use HttpClient.
using (HttpClient client = new HttpClient())
using (var response = await client.GetAsync(page, HttpCompletionOption.ResponseHeadersRead))
using (HttpContent content = …Run Code Online (Sandbox Code Playgroud)