【发布时间】:2011-10-27 11:29:48
【问题描述】:
我正在尝试实现 AjaxControlToolkit NoBot,但我总是从 IsValid() 方法得到错误(状态值总是 InvalidBadResponse)。我在这里遗漏了什么吗?
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,但它失败了。但是,然后我点击浏览器的刷新按钮,它要求我重新发送请求,我说好的,现在状态有效!为什么?
【问题讨论】:
-
您能出示您的验证码吗?是否启用了 ViewState 和 SessionState?
-
是的,一切都已启用。身份验证代码是标准的成员资格方法(验证用户,如果不是登录失败)它可以工作。该代码在我的上层代码中的“ELSE”块中。但是第一次 NotBot1.IsValid 状态总是 InvalidBadResponse。但是当我按下刷新它是有效的。更糟糕的是,我已经从教程页面下载了示例代码,并且再次出现了同样的问题。我在本地主机上测试这个。
-
您是否在页面上使用更新面板?如果你这样做,你能显示标记吗?
-
不,我不使用任何更新面板。这是自定义 dotNetNuke 模块。 Dnn 使用 asp scriptManager。我无法改变它。 NoBot 是否需要 ToolkitScriptManager?
-
看起来 SessionState 中的 controlstate 值与页面上隐藏字段中存储的值不匹配。尝试使用 UpdateMode="Alwyas" 将 NoBot 控件放入 UpdatePanel
标签: c# asp.net ajaxcontroltoolkit