在工作中用C#开发了一个小程序,不断访问去请求一个网站的页面,在循环过程中有时会报“远程服务器返回错误: (500) 内部服务器错误”,有时不会,出现的时机也不太一样。开始以为是网站的问题,后来网站是可以正常访问的,那就是自己程序的问题了。

for (int i = refreshAccount.startNum; i <= refreshAccount.endNum; i++)
{
String data2 = urlstr;
loadBranch2Request = (HttpWebRequest)HttpWebRequest.Create(data2);
loadBranch2Request.CookieContainer = request2.CookieContainer;
loadBranch2Response = (HttpWebResponse)loadBranch2Request.GetResponse();
reader = new StreamReader(loadBranch2Response.GetResponseStream(), Encoding.UTF8); string result3 = reader.ReadToEnd();
loadBranch2Response.Close();
reader.Close();
…………

从两个方向找原因,一是HttpWebRequest的正确写法,二是出现上述问题的原因。在查阅了同类问题的解决方法后,大致判断为请求报文的问题。

两个参考博文如下:

C#模拟http 发送post或get请求:https://www.cnblogs.com/aaronguo/p/7063790.html

HttpWebResponse远程服务器返回错误: (500) 内部服务器错误 的解决办法:https://blog.csdn.net/henrycg55/article/details/5330323

想当然以为用的是get方法, 不用设置loadBranch2Request.ContentType的值,事实上设置Method和ContentType的值却解决了上面的问题。

loadBranch2Request.Method = "GET";

loadBranch2Request.ContentType = "text/html;charset=UTF-8";

for (int i = refreshAccount.startNum; i <= refreshAccount.endNum; i++)
{
  String data2 = urlstr;
  loadBranch2Request = (HttpWebRequest)HttpWebRequest.Create(data2);
  loadBranch2Request.CookieContainer = request2.CookieContainer;
  loadBranch2Request.Method = "GET";
  loadBranch2Request.ContentType = "text/html;charset=UTF-8";
  loadBranch2Response = (HttpWebResponse)loadBranch2Request.GetResponse();
  reader = new StreamReader(loadBranch2Response.GetResponseStream(), Encoding.UTF8);   string result3 = reader.ReadToEnd();
  loadBranch2Response.Close();
  reader.Close();
…………

如果想获取错误页面的源码,可以用如下方法

参考:https://www.cnblogs.com/cresuccess/archive/2009/12/09/1619977.html

用下面的代码就不论错误发生与否,都可以获得服务器段页面的源代码。

 HttpWebResponse res;
try
{
res = (HttpWebResponse)req.GetResponse();
}
catch (WebException ex)
{
res = (HttpWebResponse)ex.Response;
}
StreamReader sr = new StreamReader(res.GetResponseStream(), strEncode);
strHtml = sr.ReadToEnd();
当异常发生事后,WebException 中不仅有 StatusCode 标志着 HTTP 的错误代码,而且它的 Response 属性还包含由服务器发送的 WebResponse,来指示遇到的实际 HTTP 错误。

HttpWebResponse远程服务器返回错误: (500) 内部服务器错误 的解决办法的更多相关文章

  1. HttpWebResponse远程服务器返回错误: (500) 内部服务器错误。

    现象 我们编码实现请求一个页面时,请求的代码类似如下代码: HttpWebRequest req = (HttpWebRequest)WebRequest.Create(strUrl); req.Us ...

  2. HttpWebResponse远程服务器返回错误: (500) 内部服务器错误

    现象 我们编码实现请求一个页面时,请求的代码类似如下代码: HttpWebRequest req = (HttpWebRequest)WebRequest.Create(strUrl);req.Use ...

  3. "远程服务器返回错误: (500) 内部服务器错误"错误处理

    公司购买的百傲瑞达一卡通软件,提供Restful API调用,使用SoapUI能够调用成功,但在C#里用代码调用时一直报错:"远程服务器返回错误: (500) 内部服务器错误" 找 ...

  4. (C#)调用Webservice,提示远程服务器返回错误(500)内部服务器错误

    因为工作需要调用WebService接口,查了下资料,发现添加服务引用可以直接调用websevice 参考地址:https://www.cnblogs.com/peterpc/p/4628441.ht ...

  5. sharepoint 2013 reporting services 远程server返回错误: (500) 内部server错误。

    在sharepoint 2013部署reporting services过程中,点击管理中心,server上的服务.系统配置.提示了一个错误: 远程server返回错误: (500) 内部server ...

  6. HTTP 错误 500.XX - Internal Server Error 解决办法

    HTTP 错误 500.19 - Internal Server Error 无法访问请求的页面,因为该页的相关配置数据无效. 详细错误信息 模块 IIS Web Core 通知 未知 处理程序 尚未 ...

  7. HTTP 错误 500.19 - Internal Server Error解决办法详解

    最近在服务器端部署程序发现这个问题,HTTP 错误 500.19 - Internal Server Error,程序在本地跑是没有问题的.但是部署完,浏览程序就出现这个问题,今天这篇文章就是记录一下 ...

  8. aspx页面调用webapi接口报错:远程服务器返回错误:(500)内部服务器错误

    代码在运行到response = (HttpWebResponse)request.GetResponse();就开始报错 原因:可能因为所调用的接口不存在或者接口中存在错误,可用postman测试接 ...

  9. 调用WebApi出现 远程服务器返回错误: (500) 内部服务器错误

    一.检查错误错误 将 HttpWebResponse response = (HttpWebResponse)request.GetResponse();改为 HttpWebResponse resp ...

随机推荐

  1. Hbuilder护眼主题分享

    sublime还有webstorm有很多主题,但是Hbuilder就相对较少,或者直接说基本没什么主题,在网上搜索了很久也很少有Hbuilder的主题分享,于是就自己取色调了一个仿的护眼主题来分享一下 ...

  2. 10--Python入门--异常处理

    在程序编写过程中,难免会有一些错误.python中有一些语句可以处理这些异常或者错误,使得程序能够运行,且识别到错误的位置 try..except函数,java中是try catch 在下面的例子中, ...

  3. ARP【地址解析协议】理解

    今天是来公司的第二个周一,早上收到Boss抄送的邮件说网段之间无法通信,心想现在还不太懂这个原理,于是就在网络上搜罗了一下资料,作此整理(大部分文字内容来自网络) 1. 同网段和不同网段设备通信原理详 ...

  4. MySQL数据库内置加密函数总结

    首先,我认识的加密函数有以下几个: password(plainText):旧版(OLD_PASSWORD())加密后长度16位,新版41位select length(password("1 ...

  5. [转]keepalived简介

    https://www.jianshu.com/p/b050d8861fc1 contents: 什么是Keepalived VRRP协议简介 Keepalived原理 Keepalived配置文件详 ...

  6. Windows下运行Linux命令

    安装Gow软件,Gow-0.7.0.exe,这样就可以在Windows命令行运行Linux命令,比如通过scp把Windows下的文件拷贝到Linux下. 直接运行安装,不会生成任何客户端,直接使用W ...

  7. MySQL 5.7以上 root用户默认密码问题【转】

    https://www.yanning.wang/archives/379.html 废话少说一句话系列: CentOS系统用yum安装MySQL的朋友,请使用 grep "temporar ...

  8. python写service时全局变量问题

    在尝试用flask写service的过程中,我发现全局变量使用虽然很方便,但其实是很冒险的. 本次我使用的是声明global变量的方式,如果作为本地的单次使用的程序来说,确实没有问题并且很好用,对于竞 ...

  9. spring中使用@PostConstruct和@PreConstruct注解

    1.@PostConstruct说明 被@PostConstruct修饰的方法会在服务器加载Servlet的时候运行,并且只会被服务器调用一次,类似于Serclet的inti()方法.被@PostCo ...

  10. c# automapper 使用(一)

    一.最简单的用法 有两个类User和UserDto public class User { public int Id { get; set; } public string Name { get; ...