在时间范围内限制Web服务调用的数量

时间:2011-04-12 08:21:06

标签: c# web-services asmx

我有一个 asmx web服务,它接受一些简单类型作为输入,调用 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#很新,所以不太清楚从哪里开始。任何帮助将不胜感激。

感谢。

1 个答案:

答案 0 :(得分:2)

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

缓存类上的.Add方法包含数据最大年龄参数:http://msdn.microsoft.com/en-us/library/system.web.caching.cache.add.aspx