C# 如何正确处理Concurrency Exception并通过服务堆栈公开它?
在我的应用程序中,我通过RESTAPI公开了一些功能(使用服务堆栈,但这并不重要)。 目前,我想知道哪种方法是暴露从存储库层接收到的C# 如何正确处理Concurrency Exception并通过服务堆栈公开它?,c#,entity-framework,concurrency,
servicestack,C#,Entity Framework,Concurrency,
servicestack,在我的应用程序中,我通过RESTAPI公开了一些功能(使用服务堆栈,但这并不重要)。 目前,我想知道哪种方法是暴露从存储库层接收到的并发异常问题的最佳方法。脚本: 有人想从我的api获取一些数据,例如: api/orders/1 问题是,同时有人删除了具有给定id的订单。 实体框架抛出并发异常,我能够在api层捕获它,但我应该返回什么?一些不寻常的http错误还是什么?或者可能有一个很好的做法来处理它?您可以注册一个来将C#异常映射到HTTP状态代码,例如: SetConfig(new Hos
并发异常
问题的最佳方法。脚本:
有人想从我的api获取一些数据,例如:
api/orders/1
问题是,同时有人删除了具有给定id的订单。
实体框架
抛出并发异常
,我能够在api层捕获它,但我应该返回什么?一些不寻常的http错误还是什么?或者可能有一个很好的做法来处理它?您可以注册一个来将C#异常映射到HTTP状态代码,例如:
SetConfig(new HostConfig {
MapExceptionToStatusCode = {
{ typeof(CustomInvalidRoleException), 403 },
{ typeof(CustomerNotFoundException), 404 },
}
});
如果订单不再存在,您可以返回一个404 NotFound
,以指示该实体不再存在。对于其他冲突,您可以返回409冲突
,以指示与实体的当前状态存在冲突,否则,如果您不希望消费者采取特定行动并重播请求以解决冲突,则一般400错误请求
是合适的