Recaptcha работает локально, но не в продакшене

Я следовал инструкциям по добавлению Recaptcha на свой веб-сайт (asp.net 4.0, Visual Studio / VB. Когда я запускаю страницу локально, которая представляет собой простую страницу контактной формы, которая отправляет электронное письмо, recaptcha отображается нормально, хотя я НЕ программист.

Когда я перемещаю его в производство — и я перемещаю веб-сайт (а также dll и pdb в папку app_code и папку bin, которую Visual Studio создала сама по себе), страница не просто обновляется и никогда не отправляет электронное письмо — - и не имеет значения, правильно вы вводите или нет в текстовое поле recaptcha. Без кода recaptcha страница contact.aspx работает нормально и мгновенно отправляет электронное письмо.

Но поле recaptcha есть. Я читал о сопоставлениях обработчиков в IIS и моем файле web.config, но я недостаточно умен, чтобы понять, нужно ли мне что-то делать или нет, и что делать. У меня также есть IIS 7.0 здесь.

ОБНОВЛЕНИЕ: при правильном вводе информации рекапчи в текстовое поле на странице отображается подтверждение, которое я закодировал, и отправляется электронное письмо. Когда вы НЕ вводите информацию рекапчи правильно, вместо отправки сообщения «Пожалуйста, попробуйте еще раз», он просто обновляет страницу и заставляет их начинать все сначала. Он не говорит "Пожалуйста, попробуйте еще раз" и не дает клиенту понять, что он ошибся при вводе кода.


person Jason Weber    schedule 21.01.2012    source источник
comment
И что это за ошибка, которую вы получаете?   -  person leppie    schedule 21.01.2012
comment
Что ж, я должен отредактировать свой вопрос ... Я не ясно выразился. Рекапча появляется, но форма электронной почты не работает, как без рекапчи. Неважно, правильно ли вы заполнили текстовое поле recaptcha или нет — оно просто перезагружает страницу контактов и не отправляет электронное письмо. Обычно он отправляет электронное письмо и остается на contact.aspx и говорит, что Ваше сообщение было отправлено - теперь он просто обновляет страницу контактов и ничего не отправляет.   -  person Jason Weber    schedule 21.01.2012
comment
Вы уверены, что проблема именно в повторной капче? Можете ли вы отправить электронное письмо в производство, когда повторной проверки нет на странице?   -  person benni_mac_b    schedule 21.01.2012
comment
Привет Бенни. Когда рекапчи НЕТ на странице, электронная почта работает нормально. Когда recaptcha находится на странице, она не работает — страница просто продолжает обновляться после нажатия кнопки отправки.   -  person Jason Weber    schedule 21.01.2012


Ответы (1)


Используете ли вы элемент управления ASP.NET reCAPTCHA с Recaptcha.dll?

Вы должны быть зарегистрированы в службе с доменным именем. Публичные и закрытые ключи, которые вы получаете, проверяются на соответствие этому домену:

reCAPTCHA будет работать только на этом домене и поддоменах.

Обратите внимание на скриншот страницы администратора ниже:

экран администратора reCAPTCHA с ключами

Но это правило не применяется к домену localhost, который вы используете при разработке с помощью Visual Studio. Так что вполне может быть, что вы используете не те ключи, которые получили при регистрации домена. Когда вы выбираете элемент управления и переключаетесь из представления дизайна в представление кода в Visual Studio, код элемента управления должен выглядеть следующим образом с ключами:

<recaptcha:RecaptchaControl ID="recaptcha" runat="server"
  PublicKey="6Lexn8wSAAAAAIfH1c3-6K3FbSjcKdMj3uiMImI7"
  PrivateKey="6Lexn8wSAAAAAKRFTJXTudJN1owrIQMDahwYv0hg" />

Если нет, вы должны ввести свои ключи. Это всего лишь пример, не используйте эти ключи, используйте ключи, отображаемые в вашей учетной записи, для вашего собственного домена.

person Michiel van Oosterhout    schedule 21.01.2012
comment
Я должен обновить это. Спасибо за ответ, Мишель и Виктор. Я ввел свои ключи и даже зашел на google.com/recaptcha, чтобы создать новые, чтобы протестировать их. Вот моя проблема сейчас: когда я ввожу recaptcha CORRECT, появляется подтверждающее сообщение, и я получаю электронное письмо. Когда я НЕ ввожу его правильно, вместо того, чтобы дать мне сообщение, пожалуйста, попробуйте еще раз, он просто обновляет страницу и не дает клиенту сообщения. Какие-либо предложения? Спасибо за ваше время! - person Jason Weber; 22.01.2012
comment
У меня есть это на моей странице contactengineering.aspx вверху: ‹%@ Register TagPrefix=recaptcha Namespace=Recaptcha Assembly=Recaptcha %› ‹script runat=server› Sub btnSubmit_Click(ByVal sender As Object, ByVal e As EventArgs) If Page. IsValid Then lblResult.Text = Вы поняли! lblResult.ForeColor = Drawing.Color.Green Else lblResult.Text = Неправильно lblResult.ForeColor = Drawing.Color.Red End If End Sub ‹/script› - person Jason Weber; 22.01.2012
comment
У меня есть это в форме: ‹asp:CheckBox ID=CheckBoxCC runat=server Text=‹%$ Resources:LocalizedText, contacteng11 %››‹/asp:CheckBox› ‹br /› ‹recaptcha:RecaptchaControl ID=recaptcha runat=server PublicKey=мой открытый ключ PrivateKey=мой закрытый ключ /› - person Jason Weber; 22.01.2012
comment
И у меня на странице кодбека ничего нет, никаких других кодировок. Он по-прежнему просто обновляет страницу при неправильном вводе. - person Jason Weber; 22.01.2012
comment
(и я вставил свой открытый и закрытый ключи, чтобы вы знали) - person Jason Weber; 22.01.2012