0 / 0 / 0
Регистрация: 18.12.2015
Сообщений: 4
1
.NET 4.x

Ошибка пр выполнении https post запроса(500 internal server error)

18.12.2015, 12:28. Показов 1689. Ответов 5
Метки нет (Все метки)

Добрый день. Подскажите пож. в чём может быть ошибка. При размещении на сервер появляется ошибка - 500 Internal Server Error. Вот код:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
string path = "xxx.p12";
string path2 = "xxx.crt";
 
 
            X509Certificate2 certificate1 = new X509Certificate2(Server.MapPath("~/Files/" + path), "",      X509KeyStorageFlags.MachineKeySet);
            X509Certificate2 certificate2 = new X509Certificate2(Server.MapPath("~/Files/" + path2));
            X509Certificate2Collection certificates = new X509Certificate2Collection();
            certificates.Add(certificate1);
            certificates.Add(certificate2);
            X509Certificate2 certificate = certificates[0];
 
            HttpWebRequest request = (HttpWebRequest)
            WebRequest.Create(uri); 
            request.KeepAlive = false;
            request.ProtocolVersion = HttpVersion.Version10;
            request.Method = "Post";
            request.Timeout = 1000;
          
          
 
            byte[] postBytes = Encoding.UTF8.GetBytes(post_data);
 
            
            request.UserAgent = "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)";
            request.ContentType = "application/x-www-form-urlencoded";
            request.AllowAutoRedirect = true;
            request.ContentLength = postBytes.Length;
            request.Credentials = CredentialCache.DefaultCredentials;
            
            request.Proxy = null;
          
            request.ClientCertificates.Add(certificate);
 
            Stream requestStream = request.GetRequestStream();
            requestStream.Write(postBytes, 0, postBytes.Length);
            requestStream.Close();
            XmlDocument doc = null;
            
            HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            using (var reader = new StreamReader(response.GetResponseStream()))
            {
                doc = new XmlDocument();
                doc.LoadXml(reader.ReadToEnd());
              
            }
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.12.2015, 12:28
Ответы с готовыми решениями:

Laravel. POST - 500 Internal Server Error. Connection: close
В общем, что имеем: С Laravel практически не знаком, просто понравился один сайтовый движок aka...

POST http://mysite/myfile.php 500 (Internal Server Error)
Добрый день. Пытаюсь через ajax получить инфу из базы. Скрипт обращается к файлу myfile.php....

Ошибка 500 Internal Server Error
тестирую сайт изготовленный на dreamweaver, и возникла следующая проблема: набираю в браузере: ...

ошибка 500 Internal Server Error
Добрый вечер. Помогите пожалуйста с моей проблемой. На сайте иногда появляется ошибка: 500...

5
174 / 172 / 34
Регистрация: 23.12.2015
Сообщений: 300
Записей в блоге: 3
24.12.2015, 14:04 2
А что если разрешить серверу работать с любым сертификатом:
C#
1
2
3
4
5
6
7
public class CertificateValidation
{
    public static bool ValidateServerCertificate(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors)
    {
        return true;
    }
}
0
0 / 0 / 0
Регистрация: 18.12.2015
Сообщений: 4
24.12.2015, 15:21  [ТС] 3
Спасибо. Попробовал так сделать, всё равно не работает.

C#
1
2
3
4
5
6
7
8
9
public static bool ValidateRemoteCertificate(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors)
        {
            return true;
        }
 
 
ServicePointManager.ServerCertificateValidationCallback += new RemoteCertificateValidationCallback(
                           ValidateRemoteCertificate
                       );
0
174 / 172 / 34
Регистрация: 23.12.2015
Сообщений: 300
Записей в блоге: 3
24.12.2015, 22:06 4
А какую задачу вы решаете?
У меня класс CertificateValidation - прописан отдельно в win forme
а уж в процедуре Form1_Load я вызываю функцию из этого класса

C#
1
ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CertificateValidation.ValidateServerCertificate)
и далее уже в другой процедуре делаю POST запрос на сервер с https
0
0 / 0 / 0
Регистрация: 18.12.2015
Сообщений: 4
25.12.2015, 21:33  [ТС] 5
У меня тоже класс ValidateRemoteCertificate прописан отдельно. И в методе ActionResult вызываю функцию:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
 public ActionResult UserInfo()
{
 
 
ServicePointManager.ServerCertificateValidationCallback += new RemoteCertificateValidationCallback(
                           ValidateRemoteCertificate  );
string path = "xxx.p12";
string path2 = "xxx.crt";
 
 
X509Certificate2 certificate1 = new X509Certificate2(Server.MapPath("~/Files/" + path), "",      X509KeyStorageFlags.MachineKeySet);
            X509Certificate2 certificate2 = new X509Certificate2(Server.MapPath("~/Files/" + path2));
            X509Certificate2Collection certificates = new X509Certificate2Collection();
            certificates.Add(certificate1);
            certificates.Add(certificate2);
            X509Certificate2 certificate = certificates[0];
 
            HttpWebRequest request = (HttpWebRequest)
            ......                     
 
 
 
 
 
}
0
174 / 172 / 34
Регистрация: 23.12.2015
Сообщений: 300
Записей в блоге: 3
25.12.2015, 22:31 6
А зачем вы продолжаете подключать сертификаты? Вы ведь указали, что работать с любым сертификатом.

Далее нужно просто формировать ваш POST запрос:

C#
1
2
3
4
5
6
7
8
  
 
            HttpWebRequest request = (HttpWebRequest)
            WebRequest.Create(uri); 
            request.KeepAlive = false;
            request.ProtocolVersion = HttpVersion.Version10;
            request.Method = "Post";
            request.Timeout = 1000;
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.12.2015, 22:31
Помогаю со студенческими работами здесь

Ошибка internal server error 500
Сайт на Wordpress залит на хостинг с ограничением PHP memory_limit 128Мб. Плагинов много,...

Ошибка 500 Internal Server Error
Добрый день. Есть на Битриксе Интранет портал. Там есть инфоблок "График отсутствий". Если я в...

ошибка 500 Internal Server Error
Как сделать проверку на ошибку 500 ?? Вот код для получения ссылки на картинку, если запрос...

Ошибка: 500 Internal Server Error
Здравствуйте! Делаю форму обратной связи по уроку http://www.alexdesignstudio.ru/flashform.php, с...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru