我想钩入this的问题,但也许从不同的角度来重述它。在ASP.NET Web应用程序中执行等待操作?
为了反欺诈的目的,我想阻止访客在一定数量的错误登录尝试后。在这一点上,我有一个经理类,它包装实际的函数调用登录。如果访问者被阻止,管理器会抛出异常,因此实际的登录方法从不会被调用。到现在为止还挺好。
我现在想把异常抛出部分改成Thread.Sleep
这种东西。但这不是一个选项,因为这会阻止对服务器的其他请求。是否有易替代此场景可能使用一些async
等待命令或可能使用F#
?
当前代码:
class Manager {
void Execute(Action action) {
if(user.IsBlocked)
throw new BlockedException();
else
action();
}
}
首选代码:
class Manager {
void Execute(Action action) {
if(user.IsBlocked)
//Wait for xxx minutes
action();
}
}
为什么不简单地将块的持续时间存储在存储用户凭证的相同数据库中? – 2012-02-23 14:53:33