如何让.NET服务器将文件处理结果推送到客户端jQuery?

5
我有一个HTML页面,上传一个包含要添加到数据库(.NET/C#服务器)的项目的fileOfRecords.txt文件。上传文件没有问题。
我正在尝试让服务器在处理文件中的每一行时向客户端发送状态。控制器方法将循环遍历每一行,将项目添加到数据库中。在每次迭代中,我希望向客户端发送一条消息,说明它成功或失败了。任何人都能指导我如何使用jQuery、AJAX和C#完成这个操作吗?
不幸的是,我没有代码,因为我完全不知道如何开始。

你想做什么?是要上传文件到服务器,还是在每行处理时发送状态?或者两者都要。最好使用文件选择器发送文件。然后在处理文件的同时返回状态,流式传输文件并同时处理似乎有点奇怪,但确实可以做到。 - johnny 5
还有,你为什么要这样做? - johnny 5
3
通常情况下,服务器无法向客户端“推送”数据。这是HTTP协议的限制。客户端可以重复请求数据,当有数据可用时,服务器可以做出响应。这被称为轮询。如果您经常这样做,它会给人一种服务器正在向客户端推送数据的假象。您可以使用诸如Web套接字之类的技术来实现实际数据推送,通常在.NET中使用SignalR实现。 - mason
SignalR。这是你应该走的路线。 - ragerory
2个回答

1

-1
当您的浏览器发送文件时,它们会被压缩以节省带宽,并计算一些校验和以确保文件“安全”地到达目的地。这意味着当所有数据都传输完成时,服务器才能处理请求。
但是,您可以将文件内容作为分块(逐行或n行)发送到Web服务,从而使服务器能够快速处理它并响应您的ajax处理程序。根据您的应用程序,例如如果您的文件内容作为整体很重要,您可能需要创建某种传输会话结构来保持浏览器传输和服务器响应的同步(以确保它们不会混乱)。

1
压缩与服务器无法推送数据无关。这个限制实际上来自HTTP协议本身。 - mason
的确。我没有说这是问题的根本原因,但它是最易理解的原因之一。 - Remy Grandin
在这里提到压缩只会让事情更加混乱。这不是“最易懂”的原因,只是一个转移注意力的话题。 - mason

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接