Closed. This question is opinion-based。它当前不接受答案。
                            
                        
                    
                
                            
                                
                
                        
                            
                        
                    
                        
                            想改善这个问题吗?更新问题,以便editing this post用事实和引用来回答。
                        
                        3年前关闭。
                                                                                            
                
        
在我的应用程序中,我通过rest api(使用服务栈,但不是很重要)公开了一些功能。
目前,我想知道哪种是公开从存储库层收到的concurency exception问题的最佳方法。场景:
有人想从我的api中获取一些数据,例如:

api/orders/1


问题在于,与此同时,其他人删除了具有给定ID的订单。
Entity Framework抛出concurency exception,我可以在api层中捕获它,但是我应该返回什么?一些异常的HTTP错误或其他内容?也许有一个好的做法来处理它?

最佳答案

您可以注册Custom Exception Mapping以将C#异常映射到HTTP状态代码,例如:

SetConfig(new HostConfig {
    MapExceptionToStatusCode = {
        { typeof(CustomInvalidRoleException), 403 },
        { typeof(CustomerNotFoundException), 404 },
    }
});


如果订单不再存在,则可以返回404 NotFound指示该实体不再存在。对于其他冲突,您可以返回409 Conflict来指示与实体的当前状态存在冲突,否则,如果您不希望使用者采取特定措施并重播请求以解决该冲突,则一般400 Bad Request是合适的。他们之间的冲突。

关于c# - 如何正确处理并发异常并通过Service Stack公开它? ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39107631/

10-12 21:56