C# 在时间范围内限制web服务调用的数量

C# 在时间范围内限制web服务调用的数量,c#,web-services,asmx,C#,Web Services,Asmx,我有一个asmxweb服务,它接受一些简单类型作为输入,调用一个oracle存储过程,从中获取响应,然后将该响应传递回调用方 我希望将输入带到服务,并假设它们是有效的,并且所需的操作已成功完成,我希望以某种方式(以高效的方式,例如不访问数据库)将输入存储在约定的时间跨度内,然后拒绝使用相同数据调用服务的任何尝试,直到该时间间隔过期。我希望这是清楚的 所以通过伪代码的方式 [WebMethod] public Response DoThings(int someInt, string someSt

我有一个asmxweb服务,它接受一些简单类型作为输入,调用一个oracle存储过程,从中获取响应,然后将该响应传递回调用方

我希望将输入带到服务,并假设它们是有效的,并且所需的操作已成功完成,我希望以某种方式(以高效的方式,例如不访问数据库)将输入存储在约定的时间跨度内,然后拒绝使用相同数据调用服务的任何尝试,直到该时间间隔过期。我希望这是清楚的

所以通过伪代码的方式

[WebMethod]
public Response DoThings(int someInt, string someString, DateTime someDateTime)
{
  if(!Stored(someInt, someString, someDateTime))
    {
       var response = new OracleRepository().CallStoredProcedure(someInt, someString, someDateTime);
       StoreInputs(someInt, someString, someDateTime);

       return response;
    }
  else return Response.TryLater;

}

private void StoreInputs(int someInt, string someString, DateTime, someDateTime)
  {
     Store(int someInt, string someString, DateTime, someDateTime);
  }

private bool Stored(int someInt, string someString, DateTime, someDateTime)
  {
     //some code to find out if the data is stored
  }
我不是一个完全的初学者,但我对C#还很陌生,所以不太确定从哪里开始。任何帮助都将不胜感激


谢谢。

使用
HttpContext.Current.Cache
您应该能够缓存存储过程调用的结果,然后在下一个请求中查询数据,如果找到,则返回该数据,而不是执行新的存储过程调用


cache类上的.Add方法具有数据最大年龄的参数,请参见:

ok,如果我理解您的问题,理想情况下,您不希望使用相同的数据多次攻击服务器,我觉得它很像。如果你的someInt,someString,someDateTime能透露更多你会看到更好的答案。这正是我想要的。非常感谢,先生。