Ошибка тайм-аута операции - PullRequest
       32

Ошибка тайм-аута операции

2 голосов
/ 22 декабря 2011

Я бью стену с помощью reCaptcha.net

Некоторый фон - я использую reCaptcha-dotnet v1.0.5, который я получил с http://code.google.com/p/recaptcha/downloads/list?q=label:aspnetlib-Latest.

Я смог разработать сайти заставить его работать локально с проверкой reCaptcha.При развертывании его на сервере (сайт размещен на 1and1.com) я получаю сообщение об ошибке ниже -

Тайм-аут операции

Описание: необработанное исключениепроизошло во время выполнения текущего веб-запроса.Пожалуйста, просмотрите трассировку стека для получения дополнительной информации об ошибке и о том, где она возникла в коде.

Сведения об исключении: System.Net.WebException: истекло время ожидания операции

Я проверил форумы Google, в которых рекомендуется, чтобы сервер разрешал исходящие соединения через порт 80. Я пыталсячтобы объяснить это парню из службы поддержки на 1and1.com, но я не думаю, что он вообще что-то понимает.

Кроме вышесказанного, могу ли я что-нибудь сделать для решения этой проблемы?Кто-нибудь нашел решение для этого?

Ценю любые советы!

Ответы [ 2 ]

1 голос
/ 14 мая 2015

Это код, который я использую для настройки почты и прокси Recaptcha для веб-сайта, размещенного на 1and1:1- Web.config (работает только в том случае, если его поместить!)

<system.net>
    <mailSettings>
         <smtp from="mail@domain.com">
            <network host="smtp.1and1.com" port="25" userName="mymail@domain.com" password="mypassword"/>
         </smtp>
    </mailSettings>
    <defaultProxy>
        <proxy usesystemdefault = "false" bypassonlocal="false" proxyaddress="http://ntproxyus.lxa.perfora.net:3128" />
    </defaultProxy>
</system.net>

2- Внутри выделенного действия в mycontroller:

// ouside the action I've defined the response
private class gapi {public bool success{get;set;}}

public bool SendMail(string firstname, string lastname, string email, string message, string grecaptcha)
{
    SmtpClient smtp = new SmtpClient("smtp.1and1.com");
    MailMessage mail = new MailMessage();
    mail.From = new MailAddress(email);
    mail.To.Add("mail@domain.com");
    mail.Subject = firstname + " " + lastname;
    mail.Body = message;
    try
    {
        using (var client = new WebClient())
        {
            var values = new NameValueCollection();
            values["secret"] = "6LcEnQYTAAAAAOWzB44-m0Ug9j4yem9XE4ARERUR";
            values["response"] = grecaptcha;
            values["remoteip"] = Request.UserHostAddress;

            var response = client.UploadValues("https://www.google.com/recaptcha/api/siteverify","POST", values);
            bool result = Newtonsoft.Json.JsonConvert.DeserializeObject<gapi>((Encoding.Default.GetString(response) as string)).success;
            if(!result) return "Something is wrong)";
        }
        //... verify that the other fields are ok and send your mail :)
        smtp.Send(mail);
    }
    catch (Exception e) { return "Something is wrong)"; }

    return "Okey :)";
}

Надеюсь, это поможет.

0 голосов
/ 24 декабря 2011

Наконец-то нашли решение, я получил правильный адрес прокси-сервера от 1and1 и использовал его. reCaptcha отлично работает сейчас.

Кроме того, по какой-то причине установка значения прокси в коде с использованием свойства IWebProxy элемента управления reCaptcha не работала. Мне пришлось добавить тег в web.config под.

...