防止来自API /代码的多个sql作业调用

时间:2017-09-20 06:07:19

标签: asp.net sql-server api asp.net-web-api jobs

我有一个应用程序,它在按钮点击时调用API。 API执行一个SP,它运行一个作业来执行某些操作。

问题:如果有许多客户端,可能会从前端多次点击,这可能导致多次调用API并每次执行SP。这导致多次运行相同的sql作业,这是错误的。

我做了什么:为了防止这种情况,我修改了SP以检查作业是否正在运行,然后等待其他人运行作业。

表现如何:如果我使用Postman多次调用API(使用多个标签),则只调用一次作业,这是正确的。如果我在多次提供所需参数后(从多个客户端)执行SP,则作业只执行一次。但是,如果我一次性从多个客户端点击按钮,则每次点击都会运行该作业(这是错误的)。

如果有人能帮助我,请告诉我。也许您可能知道另一种调试或测试此方案的方法。 感谢。

1 个答案:

答案 0 :(得分:0)

您可以在Web API方法调用上使用OutputCacheAttribute,它只返回上一个响应,直到它过期。这意味着如果在缓存持续时间内,无论API方法被调用多少次,该方法都将永远不会执行。

https://msdn.microsoft.com/en-us/library/system.web.mvc.outputcacheattribute(v=vs.118).aspx