2010-06-25 11 views
8

पर रिकैप्चा कुंजी सेटिंग्स कैसे सेट करें मैं Google से recaptcha नियंत्रण लागू कर रहा हूं।रनटाइम

मैंने उनके उदाहरण और सभी कार्यों से एक सरल सी # परीक्षण परियोजना बनाई। अब, एएसपीएक्स पेज में पब्लिककी और प्राइवेटकी होने की बजाय, मैं इन मानों को रन टाइम पर असाइन करना चाहूंगा क्योंकि उन्हें वेब.कॉन्फिग या डेटाबेस टेबल से खींच लिया जाएगा।

मैं Page_Load

protected void Page_Load(object sender, EventArgs e) { 
     recaptcha.PublicKey = "<deleted for obvious reasons>"; 
     recaptcha.PrivateKey = "<ditto>"; 
    } 

में निम्नलिखित लेकिन मैं यह कहते हुए कोई त्रुटि मिलती है की कोशिश की "reCAPTCHA एक सार्वजनिक & निजी कुंजी के साथ विन्यस्त किया जाना चाहिए।"

मैंने पृष्ठ की ऑनिनिट विधि को ओवरराइड करने और वहां मूल्यों को असाइन करने का भी प्रयास किया, लेकिन कोई खुशी नहीं।

इस पर विचार करने के लिए कोई विचार है?

उत्तर

16

अपने टैग में setincodebehind के मूल्य का उपयोग कर, इस तरह का प्रयास करें:

<recaptcha:RecaptchaControl ID="myRecaptcha" runat="server" 
    PublicKey="setincodebehind" PrivateKey="setincodebehind" ... /> 

कि देना चाहिए आप ठीक ढंग से codebehind में कुंजी निर्धारित किया है। इसे करने के कुछ अन्य तरीके भी हैं। उदाहरण के लिए, अगर आप इस तरह एक स्थिर वर्ग से मूल्यों को प्राप्त कर सकते हैं:

<recaptcha:RecaptchaControl ID="myRecaptcha" runat="server" 
    PublicKey="<%= RecaptchaSettings.PublicKey %>" 
    PrivateKey="<%= RecaptchaSettings.PrivateKey %>" ... /> 

कहाँ RecaptchaSettings एक वर्ग आप प्रदान करना है। या, आप अपने web.config के appSettings अनुभाग में चाबियाँ डाल सकता है, और उन्हें इस तरह का उपयोग:

<recaptcha:RecaptchaControl ID="myRecaptcha" runat="server" 
    PublicKey="<%$appSettings:RecaptchaPublicKey %>" 
    PrivateKey="<%$appSettings:RecaptchaPrivateKey %>" ... /> 

आशा है कि मदद करता है।

+0

बिल्कुल सही। धन्यवाद – NotMe

+0

चारों ओर मेसिंग, ऐसा लगता है कि 'setincodebehind' कोई स्ट्रिंग हो सकती है। धन्यवाद, यह अच्छी तरह से काम किया। – goodeye

+1

मैंने थोड़ी देर के लिए इसके चारों ओर घूम लिया - हाँ - आपके पास अपने दृश्य पर नियंत्रण में पब्लिककी और प्राइवेटकी गुण होना चाहिए - लेकिन उन्हें सही मानों की आवश्यकता नहीं है। अगर वे वहां नहीं हैं - कोडबेहिंड के माध्यम से पहुंचते समय - आपको वस्तु को एक इंस्टेंस त्रुटि पर सेट नहीं किया जाता है। – ajwaka

2

प्रमुख मान सेट करने का एक और तरीका, <appSettings> कुंजी RecaptchaPublicKey और RecaptchaPrivateKey का उपयोग करें। इन मानों का स्वचालित रूप से उपयोग नहीं किया जाएगा जब तक कि यह नियंत्रण घोषणा (mjd79's answer, पहली तरफ) के दौरान ओवरराइड हो।

प्रो: यदि आपके पास एकाधिक घोषणा है, तो आपको केवल एक ही स्थान पर, डीआरवाई सिद्धांत रखना होगा।

यह व्यवहार, स्रोत कोड के माध्यम से देखा जा सकता है RecaptchaControl.cs, line 135-...:

public RecaptchaControl() 
{ 
    this.publicKey = ConfigurationManager.AppSettings["RecaptchaPublicKey"]; 
    this.privateKey = ConfigurationManager.AppSettings["RecaptchaPrivateKey"]; 
    ... 
+0

दिलचस्प खोज। धन्यवाद! – NotMe