从 ServiceStack 3 配置强制实施的同步请求



我有一个 ASP.NET 应用程序,使用NGINX作为服务器和Servicestack 3。

当涉及到PUT请求时,我希望它们在从NGINX服务器进入Servicestack时被同步处理(永远不要同时处理多个请求,因为这可能导致它们以与调用它们的顺序不同的顺序完成工作(。据我了解,可以控制用于传入请求的线程数 - 如果我能够将该数字限制为 1,我想我会得到我想要的结果。

我将如何从 ServiceStack 配置级别实现这一点(如果可能的话 - 这个问题的接受回答让我认为它不是;但如果这是真的,我应该如何强制执行同步(?

您不太可能阻止整个 HTTP 服务器,这可能会导致所有其他请求失败。

您是否刚刚尝试过使用单例锁? 例如,您可以使用您的服务类型:

lock (typeof(MyService))
{
}

但是像这样锁定 Web 服务器通常是一个坏主意,您应该考虑使用某种乐观并发控制,在尝试更新过时记录时会引发错误。 例如,在 OrmLite 中,您可以使用其 RowVersion 功能进行乐观并发,其中客户端发送 RowVersion 表示他们拥有的记录的状态,如果它已经更新,因为 OrmLite 将抛出一个OptimisticConcurrencyException在 ServiceStack 中自动转换为409 冲突HTTP 错误响应。

最新更新