在工作中用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. DAX创建带有过滤器的超链接

    在这篇文章中,我们将创建一个DAX公式,根据报表中的过滤器生成超链接. 该度量包含2个部分,第一部分是使用DAX生成目标报告的正确URL,第二部分是将过滤器传递给该报告. 浏览器支持的MAX网址长度定 ...

  2. OpenCV中的图像插值示例

    本文地址:http://www.cnblogs.com/QingHuan/p/7384433.html,转载请注明出处 ======================================== ...

  3. linux下(Window当然也可以)解决idea创建maven项目导入过慢问题

    1.正常创建maven web项目 2.见下图,选择加号 3.弹出的框中填入archetypeCatalog----internal,确定即可

  4. 20155208徐子涵 Exp5 MSF基础应用

    20155208徐子涵 Exp5 MSF基础应用 基础问题回答 用自己的话解释什么是exploit,payload,encode. Exploit:Exploit 的英文意思就是利用,它在黑客眼里就是 ...

  5. html笔记汇总

    <html lang="en-us"> HTML标签的lang属性(language)指定当前页面所使用的自然语言,如zh.zh-cn.zh-tw.zh-hk.en.e ...

  6. openstack--9--深入理解虚拟机

    登录计算节点查看进程 [root@linux-node2 ~]# ps aux | grep kvm root 824 0.0 0.0 0 0 ? S< 10:19 0:00 [kvm-irqf ...

  7. linux查看进程启动的时间点

    ps -ef |grep xxx  # 先查找进程pid ps -wo pid,lstart -p {pid}

  8. java 偏向锁、轻量级锁及重量级锁synchronized原理

    Java对象头与Monitor java对象头是实现synchronized的锁对象的基础,synchronized使用的锁对象是存储在Java对象头里的. 对象头包含两部分:Mark Word 和 ...

  9. python 使用ElementTree解析xml

    以country.xml为例,内容如下: <?xml version="1.0"?> <data> <country name="Liech ...

  10. 基础 - 获得CPU主频

    // 获得cpu主频.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <windows.h> #include ...