数限制的时间内
问题描述:
中调用我有一个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#,所以不太知道从哪里开始。任何帮助将不胜感激。
谢谢。
答
使用HttpContext.Current.Cache
你应该能够缓存你的存储过程调用的结果,然后在下一个请求中查询它的数据,如果发现返回数据而不是做一个新的存储过程调用。
上的缓存类。新增方法对数据最大年龄看参数:http://msdn.microsoft.com/en-us/library/system.web.caching.cache.add.aspx
+0
这正是我所追求的。主席先生,非常感谢。 – Greg 2011-04-12 15:55:06
好吧,如果我理解你的问题,最好你不想击中同一数据多次服务器,看起来像[输出缓存](http://support.microsoft.com/kb/318299)给我。如果你的** someInt,someString,someDateTime **可以揭示更多,你会看到更好的答案。 – 2011-04-12 08:32:04