Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何正确处理Concurrency Exception并通过服务堆栈公开它?_C#_Entity Framework_Concurrency_<img Src="//i.stack.imgur.com/WM7S8.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">servicestack - Fatal编程技术网 servicestack,C#,Entity Framework,Concurrency,servicestack" /> servicestack,C#,Entity Framework,Concurrency,servicestack" />

C# 如何正确处理Concurrency Exception并通过服务堆栈公开它?

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

在我的应用程序中,我通过RESTAPI公开了一些功能(使用服务堆栈,但这并不重要)。 目前,我想知道哪种方法是暴露从存储库层接收到的
并发异常
问题的最佳方法。脚本: 有人想从我的api获取一些数据,例如:

api/orders/1
问题是,同时有人删除了具有给定id的订单。
实体框架
抛出
并发异常
,我能够在api层捕获它,但我应该返回什么?一些不寻常的http错误还是什么?或者可能有一个很好的做法来处理它?

您可以注册一个来将C#异常映射到HTTP状态代码,例如:

SetConfig(new HostConfig { 
    MapExceptionToStatusCode = {
        { typeof(CustomInvalidRoleException), 403 },
        { typeof(CustomerNotFoundException), 404 },
    }
});
如果订单不再存在,您可以返回一个
404 NotFound
,以指示该实体不再存在。对于其他冲突,您可以返回
409冲突
,以指示与实体的当前状态存在冲突,否则,如果您不希望消费者采取特定行动并重播请求以解决冲突,则一般
400错误请求
是合适的