webApi 如何知道请求中断

java__net 2019-06-21 10:31:20
各位好,我想了解一下,.net webapi项目中,如果客户端发起请求,控制器接收到请求后就开始执行一系列处理操作了.但是会有请求中断的可能.所以我想在返回处理结果的时候,判断一下当前请求的状态,如果中断了,我要进行操作回滚.请问大家有什么经验可以分享.谢谢
...全文
392 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
极客诗人 2019-06-23
  • 打赏
  • 举报
回复
引用 9 楼 java__net 的回复:
你怎么知道用户关闭了浏览器的呢?
因为数据放在的是缓存里面 即时关闭了浏览器 并不会对库有影响咯
极客诗人 2019-06-22
  • 打赏
  • 举报
回复
勿喷。 以前我做个类似的 最后实现如下 添加一个标识字段。。 先放在缓存里面 然后轮询。。 如果在时间段内用户有取消操作的话 就不入库 否则就执行批更新
java__net 2019-06-22
  • 打赏
  • 举报
回复
引用 8 楼 刘才鬼 的回复:
勿喷。 以前我做个类似的 最后实现如下 添加一个标识字段。。 先放在缓存里面 然后轮询。。 如果在时间段内用户有取消操作的话 就不入库 否则就执行批更新
你怎么知道用户关闭了浏览器的呢?
wanghui0380 2019-06-21
  • 打赏
  • 举报
回复
这个不看他在线还是不在线,http没能力知道。这个是说我这个业务是否需要客户确认 比如12306,比如京东。在支付阶段都是如此,支付成功没成功,看网银确认。没确认的都在待支付列表,这个列表维持20分钟(通常如此)-------比如我前天订火车票,正好在地铁出站口,正好手机信号不好,正好卡在调支付宝支付环节。那么12306跟你说的,我要回撤么?没有回撤,12306回等待支付确认(这是业务逻辑,不是断开不断开的)直到20分钟超时还没处理 所以不是做请求“断”不“断”,而是业务逻辑确认。
金虎大王 2019-06-21
  • 打赏
  • 举报
回复
要不你就发起两次请求 ,你要回滚不也就是撤销之前的数据操作吗。。
by_封爱 2019-06-21
  • 打赏
  • 举报
回复
引用
但是会有请求中断的可能
这个可能,你是如何证明的? 最起码,你要有证据来证明 这种"中断"是存在的. 在说了, 假设你说的成立, 中断了你还能返回? 那还叫"中断"了吗.... 先证明一下存在.在讨论下一步吧.
正怒月神 版主 2019-06-21
  • 打赏
  • 举报
回复
http是无状态的。 没有请求中断的说法。 而你的回滚,应该是针对当前逻辑的异常,进行的操作。 所以无论怎么样, 你都会返回一个结果给对方。除非对方断网,然后本地提示超时。 否则,无论异常与否,都会有一个包装类来反馈结果。你该回滚的回滚,正常的就返回正常数据。
java__net 2019-06-21
  • 打赏
  • 举报
回复
引用 5 楼 DF-SKy 的回复:
通过HttpContex的RequestAborted 可以实现 asp .net core开发团队已经考虑到这种情况了
HttpContext.RequestAborted.IsCancellationRequested 这个确实可以知道请求是否中断,但是HttpContext这个对象,在webapi的项目中是无法获取到的. 虽然他们都是在System.Web命名空间下的两个类 但是在Controller中的HttpContext是一个HttpContextBase类型的属性(真正的HttpContextWrapper类型,是对System.Web.HttpContext的一个封装),System.Web.HttpContext是一个类型,这两个类之间没有继承关系. 所以要想在控制器里得到HttpContext对象,貌似是没有办法的.不知道你是否了解更多的方法实现. 谢谢
java__net 2019-06-21
  • 打赏
  • 举报
回复
引用 5 楼 DF-SKy 的回复:
通过HttpContex的RequestAborted 可以实现 asp .net core开发团队已经考虑到这种情况了
ok,我尝试一下,因为Java中是有一个机制可以捕捉到中断异常的,我想.net应该也会有的. 谢谢
DF-SKy 2019-06-21
  • 打赏
  • 举报
回复
通过HttpContex的RequestAborted 可以实现 asp .net core开发团队已经考虑到这种情况了

62,072

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧