http код ответа для сайтов SSL asp - PullRequest
1 голос
/ 18 октября 2011

Я пытаюсь создать приложение Windows для отправки оповещения, если веб-сайт не работает, я сначала написал эту элементарную форму, чтобы проверить, работает ли он.

HttpWebRequest httpReq = (HttpWebRequest)WebRequest.Create(textBox1.Text);
httpReq.AllowAutoRedirect = false;

HttpWebResponse httpRes = (HttpWebResponse)httpReq.GetResponse();

if (httpRes.StatusCode == HttpStatusCode.Found)
{
    MessageBox.Show("It works.");
}
else
{
    MessageBox.Show("Not able to ping");
}
httpRes.Close();

он работал нормально, но когда я хотел сделать то же самое для сайтов SSL (https), он не работал, я посмотрел его и добавил

ServicePointManager.ServerCertificateValidationCallback = new System.Net.Security.RemoteCertificateValidationCallback(AcceptAllCertifications);

но я все еще не могу получить ответ от сайтов https, я пробовал много сайтов, поэтому я не думаю, что это проблема с сайтами, я новичок в .net любая помощь приветствуется.

1 Ответ

0 голосов
/ 19 октября 2011

Я нашел проблему, ребята, https отвечал с 200 (ОК), тогда как http отвечал с 302 (Найдено), поэтому я просто изменил свое условие, добавив 200 к нему, оно работает как шарм. Для всех, кто интересуется рабочим кодом, вот он

      public bool AcceptAllCertifications(object sender, System.Security.Cryptography.X509Certificates.X509Certificate certification, System.Security.Cryptography.X509Certificates.X509Chain chain, System.Net.Security.SslPolicyErrors sslPolicyErrors)
    {
        return true;
    }
    public Form1()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        ServicePointManager.ServerCertificateValidationCallback = new System.Net.Security.RemoteCertificateValidationCallback(AcceptAllCertifications);
        HttpWebRequest httpReq = (HttpWebRequest)WebRequest.Create(textBox1.Text);
        httpReq.AllowAutoRedirect = false;


            HttpWebResponse httpRes = (HttpWebResponse)httpReq.GetResponse();

            if (httpRes.StatusCode == HttpStatusCode.OK || httpRes.StatusCode==HttpStatusCode.Found)
            {
                MessageBox.Show("It works.");
            }
            else
            {
                MessageBox.Show("Not able to ping");
            }
            httpRes.Close();
       }

С уважением, Prasanth

...