C# AjaxControlToolkit NoBotState始终是无效的响应
我试图实现AjaxControlToolkit NoBot,但我总是从C# AjaxControlToolkit NoBotState始终是无效的响应,c#,asp.net,ajaxcontroltoolkit,C#,Asp.net,Ajaxcontroltoolkit,我试图实现AjaxControlToolkit NoBot,但我总是从IsValid()方法中得到false(状态值总是invalidAddressResponse)。我是不是遗漏了什么 ASCX代码: // buttons, textboxes etc. <asp:NoBot ID="NoBot1" runat="server" CutoffMaximumInstances="5" Cutof
IsValid()
方法中得到false(状态值总是invalidAddressResponse)。我是不是遗漏了什么
ASCX代码:
// buttons, textboxes etc.
<asp:NoBot ID="NoBot1"
runat="server"
CutoffMaximumInstances="5"
CutoffWindowSeconds="60"
ResponseMinimumDelaySeconds="2"
/>
更奇怪的是:我输入数据进行登录,然后点击asp按钮。NoBot状态为InvalidBadResponse且失败。但,然后我点击浏览器的刷新按钮,它会要求我重新发送请求,我说确定,现在状态是有效的!为什么?请参考此
据我所知,从
NoBot
控件获得“invalidAddressResponse”的唯一原因是浏览器中禁用了javascript。声明NoBot
使用的技术之一是
强制客户端浏览器执行可配置的JavaScript
作为回发的一部分,计算并验证结果。(例:政府
计算可以是简单的数值计算,也可以涉及DOM
增加了浏览器参与的保证)
“InvalidAddressRespone”消息表示javascript未执行(也来自上面的链接):
无效应答:向质询提供了无效应答
表明质询脚本未运行
我会仔细检查你的浏览器设置。我通过在浏览器中禁用javascript(只是为了确保)并在文档页面上尝试该示例来测试这一点
您可以使用OnGenerateChallengeAndResponse
属性自定义计算以指定事件处理程序。实现一个这样的事件处理程序的一个很好的例子是(代码归功于):
如其他答案中所述,无效的应答是由于Javascript质询失败 问题: 对我来说,它失败的原因是运行它所需的ASP.NET ajax库无法加载;看看浏览器的javascript调试器;这就是我的(镀铬)外观 如您所见,未提供
.axd
文件,并且错误ASP.NET Ajax客户端框架加载失败
错误非常明显
原因:(就我而言)
我有一个url重写规则,它意外地改变了.axd
url,导致无法提供这些url
如果需要添加行,我建议您检查web.config
<add input="{URL}" pattern="\.axd$" negate="true"/>
在您的Global.asax
(如果您有)中注册路线的位置(如果有)
检查此项,以便回答:另一个可能的原因可能是母版、页面或控件的ViewStateMode设置为Disabled。似乎需要启用NoBot才能正常工作
我在CMS的母版页上使用ViewStateMode=“Disabled”进行了一些测试,NoBotState开始在我的登录页上返回invalidAddressResponse。将其更改为ViewStateMode=“Enabled”已为我修复。能否显示您的身份验证代码?ViewState和SessionState是否已启用?是,所有内容都已启用。身份验证代码是标准的成员身份验证方法(验证用户,如果不是登录失败的话)。那个代码在我上面代码的“ELSE”块中。但是第一次NotBot1.IsValid状态总是InvalidAddress响应。但当我按“刷新”时,它是有效的。更糟糕的是,我已经从教程页面下载了示例代码,同样的问题再次出现。我在本地主机上测试这个。你在页面上使用UpdatePanel吗?如果可以,可以显示标记吗?不,我不使用任何UpdatePanel。这是自定义dotNetNuke模块。Dnn使用asp脚本管理器。我不能改变它。NoBot是否需要ToolkitScriptManager?SessionState中的controlstate值与页面上隐藏字段中存储的controlstate值之间似乎不匹配。尝试使用UpdateMode=“Alwyas”将NoBot控件放入UpdatePanel
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);
}
<add input="{URL}" pattern="\.axd$" negate="true"/>
routes.Ignore("{resource}.axd/{*pathInfo}");