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