【发布时间】:2012-02-24 01:11:03
【问题描述】:
我想附上this 的问题,但也许换个角度。
出于反欺诈目的,我想在一定次数的错误登录尝试后阻止访问者。此时我有一个管理器类,它包装了登录的实际函数调用。如果访问者被阻止,则管理器会抛出异常,因此永远不会调用实际的登录方法。到目前为止一切顺利。
我现在想将异常抛出部分更改为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();
}
}
【问题讨论】:
-
为什么不简单地将块的持续时间存储在存储用户凭据的同一数据库中?
标签: asp.net performance sleep async-await