我正在使用服务堆栈来构建 RESTful 服务,但对其没有深入的了解。这相当于发送请求并获取响应。我有一个场景,我的问题取决于它。
场景:我正在从浏览器或任何能够向服务器发送请求的客户端发送请求。考虑服务器将花费 3 秒来处理单个请求并将响应发送回浏览器。 一秒钟后,我从同一浏览器(客户端)向服务器发送了另一个请求。现在我收到了我稍后发送的第二个请求的响应。
问题 1:我没有得到响应的第一个请求后面发生了什么。
问题 2:我如何才能停止处理孤立请求。
编辑:我使用 IIS 服务器来托管服务。
最佳答案
ServiceStack executes requests concurrently on multithreaded web servers ,无论您是在 ASP.NET/IIS 上托管还是自托管,因此 2 个并发请求都在不同线程上同时运行。如果您在服务中执行异步任务,其中释放线程来执行不同的任务,则可能存在不同的情况,但实现细节在很大程度上与此无关。
HTTP Web 请求都会执行到最后,即使其客户端连接丢失,您的服务也永远不会收到通知,也不会引发异常。
但是对于长时间运行的服务,您可以启用高级 ServiceStack's Cancellable Requests Feature这使得客户端能够取消长时间运行的请求。
关于iis - Request和Response在服务栈中如何得到处理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42828857/