Closed. This question is opinion-based。它当前不接受答案。
想改善这个问题吗?更新问题,以便editing this post用事实和引用来回答。
3年前关闭。
在我的应用程序中,我通过rest api(使用服务栈,但不是很重要)公开了一些功能。
目前,我想知道哪种是公开从存储库层收到的
有人想从我的api中获取一些数据,例如:
问题在于,与此同时,其他人删除了具有给定ID的订单。
如果订单不再存在,则可以返回
想改善这个问题吗?更新问题,以便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