相关疑难解决方法(0)

asp.net 5/mvc 6中的PushStreamContent无法正常工作

我试图迁移一个web api项目(经典的web.config项目),使用PushStreamContent到最新的asp.net 5 web应用程序(project.json).

我的问题是我无法让PushStreamContent工作.

当我使用这个api控制器时 - 结果将以json格式结束,而不是作为流:

[Route("api/[controller]")]
public class EventsController : Controller
{
    private static readonly ConcurrentQueue<StreamWriter> s_streamWriter = new ConcurrentQueue<StreamWriter>();

   [HttpGet]
    public HttpResponseMessage Get(HttpRequestMessage request)
    {
         HttpResponseMessage response = request.CreateResponse();
        response.Content = new PushStreamContent(new Action<Stream, HttpContent, TransportContext>(WriteToStream), "text/event-stream");
        return response;
    }

    private void WriteToStream(Stream outputStream, HttpContent headers, TransportContext context)
    {
        var streamWriter = new StreamWriter(outputStream) {AutoFlush = true};
        s_streamWriter.Enqueue(streamWriter);
    }
}
Run Code Online (Sandbox Code Playgroud)

如果我更改控制器操作以返回任务并在类MyPushStreamResult中包装PushStreamContent - 像这样:

[HttpGet]
public async Task<IActionResult> Get(HttpRequestMessage request)
{
    var stream = new PushStreamContent(new Action<Stream, …
Run Code Online (Sandbox Code Playgroud)

c# pushstreamcontent asp.net-core-mvc asp.net-core

7
推荐指数
1
解决办法
6915
查看次数