【问题标题】:What happens in IIS/C# when a request is aborted中止请求时 IIS/C# 中会发生什么
【发布时间】:2012-07-06 04:46:55
【问题描述】:

所以我正在考虑一种功能,用户粘贴链接,服务器端代码抓取提供的链接并以该链接的内容(例如页面标题、描述、缩略图等)进行响应。

用户可以同时更改链接,并且在这样做时,应该在客户端中止 ajax 请求。

我想知道 IIS 服务器中究竟发生了什么,特别是我的 C# 代码。

  • 响应线程是否终止?
  • Response 对象现在返回 null,还是 Response.Write 抛出异常?
  • 是否在响应线程中抛出异常,不管它在哪里? (那个甚至没有意义,但无论如何)

【问题讨论】:

    标签: c# ajax iis xmlhttprequest


    【解决方案1】:

    如果服务器代码检查Response.IsClientConnected的状态,它可以停止工作并在客户端中止请求时产生一个空响应,否则它将照常完成请求。

    请求处理不会因为没有人再等待而自动中止。服务器代码必须主动检查请求的状态。

    【讨论】:

      【解决方案2】:

      您的网络服务器不知道客户端取消了请求。请求仍将得到满足,并将发回响应。您编写的客户端脚本需要能够处理页面的当前状态。

      如果您确定自己不关心响应,我建议您在客户端中止请求:

      xhr.abort()
      

      【讨论】:

      • 那么我的网络服务器的代码执行完成了吗?那么,中止请求有什么意义呢?
      • 所以一个 Ajax 请求通常有两个步骤(简化)。 1. 启动请求。 2. 对响应做一些事情(成功或失败回调)。如果您中止请求,那么您的回调方法将不必处理响应。
      【解决方案3】:

      如果您在写入响应之前关闭连接客户端,则会引发错误说明。当响应从服务器返回时,您可以选择不处理它。

      【讨论】:

        【解决方案4】:

        一旦将请求发布到服务器,IIS 将开始执行服务器端代码。现在服务器可以决定是否需要执行代码。

        在整个页面周期中,您可以检查Guffa提到的Request.IsClientConnected并终止执行。

        但是是的,这完全取决于您的场景。

        希望对你有帮助。

        【讨论】:

          猜你喜欢
          • 2012-06-24
          • 2021-01-05
          • 2013-06-09
          • 1970-01-01
          • 2018-07-21
          • 2017-03-24
          • 2015-11-25
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多