当我尝试分配Public& amp时,我在加载Google Recaptcha控件时遇到问题私有密钥动态地在代码后面。它在简单的ASP.Net网站上运行良好,但是当我将它集成到DNN模块中时它不起作用。
错误消息: reCAPTCHA需要配置公开&私钥。
堆栈跟踪:
DotNetNuke.Services.Exceptions.PageLoadException:reCAPTCHA需要使用public& amp;私钥。 ---> System.ApplicationException:reCAPTCHA需要配置public&私钥。在System.Web.UI.Control.InitRecursive(Control.Web.UI.UI.Control.InitRecursive)的System.Web.UI.Control.InitRecursive(Control namingContainer)的System.Web.UI.Control.InitRecursive(Control namingContainer)中的Recaptcha.RecaptchaControl.OnInit(EventArgs e)在DotNetNuke的System.Web.UI.ControlCollection.Add(Control child)的System.Web.UI.Control.AddedControl(Control control,Int32 index)的System.Web.UI.Control.InitRecursive(Control namingContainer)中的namingContainer。位于系统的System.Web.UI.Control.PreRenderRecursiveInternal()的System.Web.UI.Control.EnsureChildControls()处的DotNetNuke.UI.Modules.ModuleHost.CreateChildControls()处的UI.Modules.ModuleHost.InjectModuleContent(控件内容)。 System.Web上的System.Web.UI.Control.PreRenderRecursiveInternal()处的System.Web.UI.Control.PreRenderRecursiveInternal()处的System.Web.UI.Control.PreRenderRecursiveInternal()处的Web.UI.Control.PreRenderRecursiveInternal()。系统中的UI.Control.PreRenderRecursiveInternal()系统中的System.Web.UI.Control.PreRenderRecursiveInternal()处的System.Web.UI.Control.PreRenderRecursiveInternal()处的System.Web.UI.Control.PreRenderRecursiveInternal()处的tem.Web.UI.Control.PreRenderRecursiveInternal()。 Web.UI.Page.ProcessRequestMain(布尔includeStagesBeforeAsyncPoint,布尔includeStagesAfterAsyncPoint) ---内部异常堆栈跟踪结束---
标记:
<googleCaptcha:RecaptchaControl ID="ctlRecaptcha" runat="server" />
代码隐藏:
protected void Page_Load(object sender, EventArgs e)
{
ctlRecaptcha.PublicKey = "xyz";
ctlRecaptcha.PrivateKey = "abc";
}
答案 0 :(得分:1)
我实际上有一个关于创建custom DNN registration with the Google Recaptcha的DNNHero.com教程。它包括一个视频和代码项目。
查看我的代码,我在ascx中包含了publickey和privatekey的属性,但是有虚拟值:
<googleCaptcha:RecaptchaControl ID="ctlRecaptcha" runat="server" PublicKey="your_public_key" PrivateKey="your_private_key"/>
我设置的属性值就像你在Page_Load事件中设置的那样。这对我有用。如果它仍然抛出错误,请尝试并发表评论。