我正在尝试实现 AjaxControlToolkit NoBot 但我总是得到 falseIsValid()
方法(状态值始终为无效不良响应)。我在这里错过了什么吗?
ASCX 代码:
// buttons, textboxes etc.
<asp:NoBot ID="NoBot1"
runat="server"
CutoffMaximumInstances="5"
CutoffWindowSeconds="60"
ResponseMinimumDelaySeconds="2"
/>
背后代码:
protected void Button1_Click(object sender, EventArgs e)
{
AjaxControlToolkit.NoBotState state;
if (!NoBot1.IsValid(out state))
{
Page page = HttpContext.Current.Handler as Page;
ScriptManager.RegisterStartupScript(page, page.GetType(), "err_msg", "alert('" + " BOT " + "');", true);
}
else
{ ...}
}
更奇怪的是:我输入登录数据并单击 asp 按钮。 NoBot 状态为InvalidBadResponse
它失败了。但是,然后我单击浏览器的刷新按钮,它要求我重新发送请求,我说“好吧”,现在状态有效!为什么?
据我所知,你会得到“的唯一原因”无效不良响应“ 来自NoBot
控制是您的浏览器中是否禁用了 javascript。这文档页 http://www.asp.net/ajaxLibrary/AjaxControlToolkitSampleSite/NoBot/NoBot.aspx指出所使用的技术之一NoBot
is
强制客户端浏览器执行可配置的 JavaScript
计算并验证结果作为回发的一部分。 (例如:
计算可能是简单的数值计算,也可能涉及到 DOM
以进一步确保涉及浏览器)
An "无效不良响应" 消息意味着 javascript 没有被执行(也来自上面的链接):
无效的错误响应:对挑战提供了无效的响应
提示挑战脚本未运行
我会仔细检查您的浏览器设置。我已经通过在浏览器中禁用 javascript(只是为了确保)并尝试文档页面上的示例来对此进行了测试。
您可以使用自定义计算OnGenerateChallengeAndResponse
属性来指定事件处理程序。我实现一个这样的事件处理程序的一个很好的例子是(代码归功于这个帖子 http://jlchereau.blogspot.com/2007/10/ajax-control-toolkit-nobot-control-and.html):
protected void PageNoBot_GenerateChallengeAndResponse(object sender, AjaxControlToolkit.NoBotEventArgs e)
{
Random r = new
Random();
int iFirst = r.Next(100);
int iSecond = r.Next(100);
e.ChallengeScript = String.Format("eval('{0}+{1}')", iFirst, iSecond);
e.RequiredResponse = Convert.ToString(iFirst + iSecond);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)