【问题标题】:How can a .NET server push file processing results to clientside jQuery?.NET 服务器如何将文件处理结果推送到客户端 jQuery?
【发布时间】:2016-03-21 11:21:45
【问题描述】:

我有一个 HTML 页面,它上传包含要添加到数据库(.NET/C# 服务器)的项目的 fileOfRecords.txt。上传文件工作正常。

我正在尝试让服务器在处理文件中的每一行时将状态发送回客户端。

控制器方法将遍历每一行将项目添加到数据库。在每次迭代中,我想向客户端发送一条消息,说明它是否成功或失败。谁能指导我如何使用 jQuery、AJAX 和 C# 来完成这项工作?

不幸的是,我没有代码,因为我完全不知道如何开始。

【问题讨论】:

  • 那么你想做什么?将文件上传到服务器,或者您是否尝试在处理每一行时发送状态?或两者。您可能应该只使用文件选择发送文件。然后返回正在处理的状态,流式传输文件并同时处理它看起来有点奇怪,但可以做到。
  • 还有,你为什么要这么做?
  • 在正常情况下,服务器无法向客户端“推送”数据。这是 HTTP 协议的限制。客户端可以重复请求数据,服务器可以在数据可用时进行响应。这叫做轮询。如果您经常这样做,它可能会让人觉得服务器正在将数据推送到客户端。您可以使用web sockets等技术实现数据的实际推送,在.NET中通常使用SignalR实现。
  • SignalR.那是你应该走的路。

标签: c# jquery


【解决方案1】:

您是否要让 jquery 调用服务器端函数?

嗯,好消息。

http://encosia.com/using-jquery-to-directly-call-aspnet-ajax-page-methods/

【讨论】:

    【解决方案2】:

    当您的浏览器发送文件时,它们会被压缩以节省带宽,并且会计算一些校验和以确保文件“安全”地到达目的地。这意味着服务器只有在传输完所有数据后才能处理请求。

    但是,您可以将文件内容作为块(逐行或逐行)发送到 Web 服务,允许服务器快速处理它并响应您的 ajax 处理程序。根据您的应用程序,例如文件的内容作为一个整体很重要),您可能需要创建某种传输会话结构以保持浏览器传输和服务器响应同步(以确保它们不会混乱)

    【讨论】:

    • 压缩与服务器无法推送数据无关。这种限制实际上来自 HTTP 协议本身。
    • 确实如此。我没有说这是问题的根本原因,但这是最容易理解的原因之一。
    • 在这里提到压缩只会让人感到困惑。这不是“最容易理解”的原因,只是一个红鲱鱼。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-04
    • 1970-01-01
    相关资源
    最近更新 更多