gpt4 book ai didi

asp.net - 如何在 ASP.net MVC 4 中将文本流式传输到浏览器?

转载 作者:行者123 更新时间:2023-12-04 12:52:44 24 4
gpt4 key购买 nike

我正在尝试弄清楚如何让 ASP.net MVC 4 在长时间运行的操作期间将数据发送回浏览器。因为我以前从未这样做过,所以我从一个简单的例子开始:

public void Index()
{
Response.Write("<p>Hello, world! Counting to 5!</p>");
for (int i = 0; i < 5; i++)
{
Thread.Sleep(1000);
Response.Write("<p>" + i + "</p>");
Response.Flush();
}
}

我认为这段代码应该立即发送“Hello, world! Counting to 5!”到浏览器,然后每秒发送一位数字,直到达到五位。

但是,当我运行这段代码时,它需要五秒钟的时间,所有文本都会立即输出。

我认为 Response.Flush() 方法应该允许您以增量方式向浏览器发送数据。

我怎样才能让它工作?

最佳答案

我找到了问题的答案。

首先,如果 Internet Explorer 没有发现文档是有效的 HTML,它似乎不会流式传输文本。我添加了代码来围绕我的数据打印出一个简单的 HTML 页面,这似乎让它起作用了。

另一位作者在这里写道:http://encosia.com/easy-incremental-status-updates-for-long-requests/ Internet Explorer 会自动缓冲输入的前 256 个字符,因此建议在开头放入 256 个字符的一次性数据,但这似乎对我正在使用的版本没有影响(IE 10 ).

最后,我只数到四,因为我少了一个 ;-)

这是我的工作代码:

public void Index()
{
Response.Write("<!DOCTYPE html><html><head><title>Test</title></head><body>");

Response.Write("<!--");
Response.Write(new string('*', 256));
Response.Write("-->");
Response.Flush();

Response.Write("<p>Hello, world! Counting to 5!</p>");
for (int i = 1; i <= 5; i++)
{
Response.Flush();
Response.Write("<p>" + i + "</p>");
Thread.Sleep(1000);
}
Response.Write("</body></html>");
}

关于asp.net - 如何在 ASP.net MVC 4 中将文本流式传输到浏览器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19457362/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com