C # .net winforms HTTP GET возвращает внутреннюю ошибку сервера (500) - PullRequest
0 голосов
/ 28 мая 2018

При запросе через Fiddler или Postman оба возвращают успешные результаты, а при запросе из режима отладки всегда возвращается внутренняя ошибка сервера (500).

Что я сделал до сих пор:

Использование Fiddler v4.6.20172.34691: Вот пример запроса: Запрос Fiddler

Вот пример ответа: Ответ Fiddler

Использование Postman v6.1.3: Вот пример запроса и ответа: Запрос и ответ почтальона

Для визуальной части студии: Часть инициализации кода Form1:

urlparameters = @"?account=" + username;
                        url = "https://" + platform + "/Home/CheckRegAccountAvailable" + urlparameters;
                        method = "GET";

clsHttp.cs инициализация httpwebrequest:

request = (HttpWebRequest)WebRequest.Create(_url);
    request.Timeout = _timeout;
    request.Method = _method;
    request.ContentType = _responsetype;

    if (_method != "GET")
    {
        if (_contentlength > 0)
        {
            request.ContentLength = _contentlength;
        }

        if (_isrequestbody)
        {
            using (var streamWriter = new StreamWriter(request.GetRequestStream()))
            {
                streamWriter.Write(_requestbody);
                streamWriter.Flush();
                streamWriter.Close();
            }
        }
    }

clsHttp.cs получение ответа:

string result = "", _msg = "";

    using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
    {
        using (Stream stream = response.GetResponseStream())
        {
            using (StreamReader reader = new StreamReader(stream))
            {

                result = reader.ReadToEnd();
            }

            _msg = "Received response...";
            Console.WriteLine(_msg);
            if (_isLog)
                doLogToFile(_filename, _fileextension, _path, _msg);

            if (_isUIRTBLog)
                rtb_AppendText(_rtb, _msg + "\r\n");

            Console.WriteLine(_msg);
        }
    }

Заранее спасибо.

[Обновить1]

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

[Обновление 2]

Здесьобразец WebException. Ответ, который я получаю, если не включил пользовательский агент, который возвращаетвнутренняя ошибка сервера (500):

Набор символов: "utf-8" ContentEncoding: "" ContentLength: 36213 ContentType: "text / html;charset = utf-8 "Cookies: {System.Net.CookieCollection} Заголовки: {Content-Length: 36213 Cache-Control: частный Content-Type: text / html; charset = utf-8 Set-Cookie: ASP.NET_SessionId = vjxdzvk43vxif4kkviib5vio; путь = /; HttpOnly, локали = ZH-CN; путь = /; HttpOnly, ASP.NET_SessionId = vjxdzvk43vxif4kkviib5vio; путь = /; HttpOnly, локали = ZH-CN; путь = /; HttpOnly, __ RequestVerificationToken = MjSUG0cF0M-T2dE9BmthuQq_8vWLgdne0xPuzZggdMst1jUwfuZ30mDzwAdXFSQBMP8ql9VdbXC-d0cLvgpBiCydvrRk8lvZrStzp6e7cyQ1; path = /; HttpOnly, ARRAffinity = e55696f2f9da07a0a50d293b25a04f89be0f0552dbf622b9a924c6d5d272eff4; Путь = /; HttpOnly; Домен = www.iwin98.com Сервер: Microsoft-IIS / 5.2EIN-XOR: SAMR Параметры, SAME: EIGOR: SAME: EIGOR: XIIG-SAM:-AspNet-версия: 4.0.30319 X-Powered-By: ASP.NET Дата: вторник, 29 мая 2018 г. 01:19:08 GMT

}

IsFromCache: false IsMutuallyAuthenticated: false LastModified: {29.05.2008 9:19:17} Метод: «ПОЛУЧИТЬ» ProtocolVersion: {1.1} ResponseUri: {https://www.iwin98.com/Home/CheckRegAccountAvailable?account=username} Сервер: «Microsoft-II»S / 10.0 "StatusCode: InternalServerError StatusDescription:" Внутренняя ошибка сервера "SupportsHeaders: true

1 Ответ

0 голосов
/ 28 мая 2018

Ваш код не устанавливает заголовок запроса User-Agent, и запрошенный URL, вероятно, не слишком умен, чтобы ожидать запросы без User-Agent.Вероятно, он создает внутреннее исключение NullReferenceException.

Добавьте это к своему коду:

request.UserAgent="Some value" 

Или исправьте сервер, если у вас есть контроль над ним.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...