簡體   English   中英

無法在ASP.NET中集成reCAPTCHA v2(服務器端)

[英]Cannot Integrate reCAPTCHA v2 (server side) in ASP.NET

我們在ASP.NET項目中使用了reCAPTCHA,並將驗證碼從ascx發送到頁面(服務器端)后面的代碼沒有問題。 但是,在2018年3月之后,我們必須將驗證碼更新為v2並進行以下更改:

用戶控件(cs):

....
protected Recaptcha.Web.UI.Controls.Recaptcha Captcha;
protected override Recaptcha.Web.UI.Controls.Recaptcha ReCaptcha 
    { get { return this.Captcha; } }

protected void btnSend_Click(object sender, EventArgs e)
{
    if (this.Submit(sender))
        this.mvMain.ActiveViewIndex++;
}


reCAPTCHA v1(ascx):在此版本中,站點密鑰在web.config中定義。

<%@ Control Language="C#" AutoEventWireup="true" Inherits="Tools.WebUI._ContactForm"%>

<%@ Register Assembly="Recaptcha.Web" Namespace="Recaptcha.Web.UI.Controls" TagPrefix="cc1"%>

<asp:MultiView ID="mvMain" ActiveViewIndex="0" runat="server">
    <asp:View runat="server">
        <div id="divCaptcha">

            <!-- code omitted for brevity -->

            <div id="captcha">
                <cc1:Recaptcha ID="Captcha" Theme="Clean" runat="server" />

            </div>
            <asp:TextBox ID="txtBotCheck" style="display:none !important" runat="server" />
            <asp:Button ID="btnSend" runat="server" OnClick="btnSend_Click" />
            <asp:Label ID="lblMessage" runat="server" CssClass="captchaMessage"></asp:Label>
        </div>
    </asp:View>
    <asp:View runat="server">
        Message was sent...
    </asp:View>
</asp:MultiView>


reCAPTCHA v2(ascx):

<%@ Control Language="C#" AutoEventWireup="true" Inherits="Crema.Tools.WebUI._ContactForm"%>

<%@ Register Assembly="Recaptcha.Web" Namespace="Recaptcha.Web.UI.Controls" TagPrefix="cc1"%>

<asp:MultiView ID="mvMain" ActiveViewIndex="0" runat="server">
    <asp:View runat="server">

    <script src="http://www.google.com/recaptcha/api.js" async defer></script> 

        <div id="divCaptcha">

            <!-- code omitted for brevity -->

            <div id="captcha">
                <div class="g-recaptcha" data-sitekey="tlcUAAACV...............FhQ"></div>     
            </div>

            <asp:TextBox ID="txtBotCheck" style="display:none !important" runat="server" />
            <asp:Button ID="btnSend" runat="server" OnClick="btnSend_Click" />
            <asp:Label ID="lblMessage" runat="server" CssClass="captchaMessage"></asp:Label>
        </div>
    </asp:View>
    <asp:View runat="server">
        Message was sent...
    </asp:View>
</asp:MultiView>

發送此表單時,我們遇到錯誤pge,並且相關日志中存在以下錯誤。 另一方面,當我們查看Firebug網絡時,即使我們使用具有name =“ captcha”的“ name”屬性,也觀察到g-recaptcha-response ,但未觀察到驗證碼參數。

異常信息:

異常類型:NullReferenceException異常消息:對象引用未設置為對象的實例。 在System.Web.UI的Tools.WebUI._ContactForm.btnSend_Click(對象發件人,EventArgs e)(在System.Web.UI.WebControls.Button.RaisePostBackEvent(字符串eventArgument)處)在Tools.Domain.FormUserControl.Submit(對象發件人)處。 Page.ProcessRequestMain(布爾includeStagesBeforeAsyncPoint,布爾includeStagesAfterAsyncPoint)

任何想法?

我遵循了這個很棒的教程,以在ASP.NET WebForms中實現reCaptcha v2:

https://www.aspsnippets.com/Articles/Google-RECaptcha-Code-with-Example-in-ASPNet.aspx

PS:這個人有很多很棒的技巧和文章,我會不時檢查。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM