我有一个在Web服务器上运行的asp.net Web服务,其中包含一个Web方法(wm) 做一些基于参数(param)的处理。
我想在某些情况下限制对此Web方法的并发调用 - 即何时 client1传递的参数值等于client2传递的参数。
我正在考虑在wm的开头添加一些验证,以便在处理开始之前检查条件。
我的问题是:
我想避免数据库日志记录,因为如果服务器出现故障,日志可能不会更新(除非有一种很好的方法来处理这种可能性)
答案 0 :(得分:0)
恕我直言网络服务应该无国籍,你必须避免做这类事情。否则从我的头部(未测试):
[WebMethod]
public void SomeMethod(string p)
{
var cache = HttpContext.Current.Cache;
// Be careful with the equality comparison here
// it might not work with complex types
if (cache["param"] == p)
{
throw new Exception("Another client has called this method with same argument");
}
cache["param"] = p;
try
{
// Execute your method here
}
finally
{
cache.Remove("param");
}
}