c# - 如果另一个 API 调用当前在 ASP.NET Core 中运行,则拒绝 API 调用
问题描述
我正在编写一个对数据库执行大量操作的 API,包括截断一些表,然后插入一些记录。API 不是供最终客户使用的,它只是用来为一些系统测试准备数据库的东西。但是,它可能会被意外调用两次。
如果在同一端点上已经有另一个请求正在服务,是否有某种方法可以拒绝某个控制器端点的 API 调用(比如说返回 4xx)?
解决方案
假设只有一个服务器处理 API,您可以在控制器内使用 Mutex 和以下代码:
using (var mutex = new System.Threading.Mutex(false,
"Global\\{7B28AF1F-AB08-4A11-B109-0E58F40B23D4}")); // Replace GUID with your own
{
if (!mutex.WaitOne(0, false))
{
return new ConflictResult(); // 409
}
// Do stuff here
}
推荐阅读
- java - 我可以在 Java 注释中使用 ScopedProxyMode 时访问 JobExecutionContext
- c++ - 使用 SFML 绘制东西
- html - 为什么 display flex 会连续隐藏第一张图片?
- html - 滚动顶部的粘性渐变不起作用
- php - 以嵌套形式获取只读输入的值
- android - 数据库中的 GoogleApiClient 重复国家/地区值
- three.js - 三个Js更新顶点、法线和索引
- python - 如何获取值以及具有该特定值的行数,该特定值源自熊猫数据帧上的多个条件?
- javascript - 如何调用同名但参数相似的 JavaScript 函数
- android - Android Studio 代码格式不遵循设置