Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#.net winforms HTTP GET返回内部服务器错误(500)_C#_.net_Httpwebrequest - Fatal编程技术网

C#.net winforms HTTP GET返回内部服务器错误(500)

C#.net winforms HTTP GET返回内部服务器错误(500),c#,.net,httpwebrequest,C#,.net,Httpwebrequest,通过Fiddler或Postman进行请求,两者都返回成功的结果,而从调试模式进行请求时,始终返回内部服务器错误(500) 到目前为止我所做的: 使用Fiddler v4.6.20172.34691: 以下是示例请求: 以下是示例响应: 使用Postman v6.1.3: 以下是请求和响应示例: 对于visual studio部分: Form1代码初始化部分: urlparameters = @"?account=" + username;

通过Fiddler或Postman进行请求,两者都返回成功的结果,而从调试模式进行请求时,始终返回内部服务器错误(500)

到目前为止我所做的:

使用Fiddler v4.6.20172.34691: 以下是示例请求:

以下是示例响应:

使用Postman v6.1.3: 以下是请求和响应示例:

对于visual studio部分: Form1代码初始化部分:

urlparameters = @"?account=" + username;
                        url = "https://" + platform + "/Home/CheckRegAccountAvailable" + urlparameters;
                        method = "GET";
httpwebrequest的clsHttp.cs初始化:

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)的用户代理,则会得到响应:

CharacterSet:“utf-8”ContentEncoding:“ContentLength:36213 ContentType:“text/html;charset=utf-8”Cookies:{System.Net.CookieCollection}头:{内容长度:36213缓存控制:私有内容类型:text/html;charset=utf-8 Set Cookie:ASP.NET_SessionId=vjxdzvk43vxif4kkviib5vio;path=/;HttpOnly,locale=zh CN;path=/;HttpOnly,locale=vjxdzvzdzvkviib5vio;path=/;HttpOnly,locale=zh CN;path=/;HttpOnly,u RequestVerificationToken=sug0cf0m-t29bmg8zglggdmst1juwfuzz30mdzwadxfsqbmp8ql9vdbxc-d0cLvgpBiCydvrRk8lvZrStzp6e7cyQ1;path=/;HttpOnly,ARRAffinity=e5596f2f9da07a50d20d293b25a04f89be0f0552dbf622b9a924c6d5d272eff4;path=/;HttpOnly;Domain=www.iwin98.com服务器:Microsoft IIS/10.0 X-AspNetMvc-Version: 5.2 X-Frame-Options:SAMEORIGIN,SAMEORIGIN,SAMEORIGIN X-AspNet-Version:4.0.30319 X-Powered-By:ASP.NET日期:2018年5月29日星期二01:19:08 GMT

}


IsFromCache:false IsMutuallyAuthenticated:false LastModified:{5/29/2018 9:19:17 AM}方法:“GET”协议版本:{1.1}响应URI:{}服务器:“Microsoft IIS/10.0”状态代码:InternalServerError状态描述:“内部服务器错误”SupportsHeaders:true

您的代码未设置用户代理请求标头,并且请求的URL可能不太智能,无法预期没有用户代理的请求。它可能在内部引发NullReferenceException

将此添加到您的代码中:

request.UserAgent="Some value" 

或者,如果您可以控制服务器,请修复它。

那么500的响应主体是什么?邮递员请求和通过代码发出的请求之间有什么区别?您确实看到没有设置用户代理吗?我无法获取响应主体,它已经在这一部分返回错误:using(HttpWebResponse=(HttpWebResponse)request.GetResponse())。通过使用这些第三方应用程序,他们返回了结果,因此我想知道我是否遗漏了代码中的某些内容。HttpWebRequest是否必须使用用户代理?我最近做了很多HTTP请求,但我没有设置用户代理,它们工作正常。您可以通过错误响应获取响应正文。通过或通过letting您的请求流经Fiddler并在那里进行检查。不,不需要用户代理,但如果这是工作请求和非工作请求之间的唯一区别,那么您可以尝试一下。可能是一些服务器端软件假定它已设置。@CodeCaster,我已更新了问题并设置了用户代理,似乎可以解决问题。@Pavlinll,我将添加用户代理部分并进行一些测试,对于服务器部分,我们无法控制它。似乎添加用户代理可以解决问题,如果没有设置用户代理,这是服务器问题吗?是的,这是服务器写得不好的问题,每次都会有可选的UserAgent头被填充。好的,这是值得注意的,下次我删除再次使用其他http请求,我将在标题中包含用户代理,再次感谢。