gpt4 book ai didi

c# - 如何防止 MVC Controller 中的并发访问?

转载 作者:太空狗 更新时间:2023-10-29 20:10:09 25 4
gpt4 key购买 nike

我有一个可通过特定 URL 访问的 MVC Controller ,调用该 Controller 时会运行一系列耗时的过程(来自数据库的后处理数据)。

我需要确保当用户调用该方法时,进程启动一次。如果任何其他用户在后处理运行时访问该特定 URL,则不会同时发生后处理。

我的问题:

  • 我应该使用 locks 吗?在 C# 中?
  • 我是否应该在数据库中使用一些类似 inProgress 的标志,以便标记处理的开始和结束时间?
  • 还有其他解决方案吗?

最佳答案

如果你想扩展到多台机器,内存锁不是一个选择,但数据库锁可能是最简单的。

例如,您可以创建一个带有唯一 ID 字段的锁表。收到请求后,尝试插入 id 为 1 的行。如果成功,则后处理并删除该键。

在另一次运行期间存在 key 时尝试插入 key 的任何其他请求都将导致插入失败并且不会运行作业。

关于c# - 如何防止 MVC Controller 中的并发访问?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23959771/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com