我在考虑一个功能,用户粘贴一个链接,服务器端代码会爬取该链接并响应该链接的内容(如页面标题、描述、缩略图等)。
与此同时,用户可以更改链接,这样做的话,Ajax请求应该在客户端被取消。
我想知道在IIS服务器上发生了什么,特别是我的C#代码。
- 响应线程是否终止?
- Response对象现在是否返回null,还是Response.Write会抛出异常?
- 如果响应线程中抛出异常,它会在任何地方抛出吗?(这个甚至没有意义,但无所谓)
我在考虑一个功能,用户粘贴一个链接,服务器端代码会爬取该链接并响应该链接的内容(如页面标题、描述、缩略图等)。
与此同时,用户可以更改链接,这样做的话,Ajax请求应该在客户端被取消。
我想知道在IIS服务器上发生了什么,特别是我的C#代码。
Response.IsClientConnected
的状态,当客户端中止请求时,它可以停止工作并生成空响应,否则它将像往常一样完成请求。您的Web服务器并不知道客户端取消了请求。请求仍将被满足,并将发送回响应。您编写的客户端脚本需要能够处理页面当前状态。
如果您确定不关心响应,则建议在客户端中中止请求:
xhr.abort()
如果在响应被写入之前客户端关闭连接,将会抛出一个指明此事的错误。当从服务器返回响应时,您可以选择不处理它。