作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试弄清楚如何让 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/
我是一名优秀的程序员,十分优秀!