苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

分布式系统框架(V1.3) 轻松承载百亿数据,千万流量!讨论专区 - 源码下载 - 官方教程

HttpHelper万能框架(V2.3-含.netcore) HttpHelper官方出品,无敌框架讨论区 - 源码下载 - 在线测试和代码生成

HttpHelper爬虫类(V2.0) 最牛的爬虫类,没有爬不到只有想不到 源码 - 代码生成器 - 讨论区 - 教程- 例子

查看: 292|回复: 5

[HttpHelper] GetHtml不响应的问题

[复制链接]
发表于 2019-9-26 03:52:09 | 显示全部楼层 |阅读模式
本帖最后由 pangcrow 于 2019-9-26 03:54 编辑

作者大大你好,最近发现用线程池在执行
[C#] 纯文本查看 复制代码
HttpResult result = http.GetHtml(item);

的时候偶尔会卡着不动

[C#] 纯文本查看 复制代码
Method = "GET"
Timeout = 300000
ReadWriteTimeout = 150000
Connectionlimit = 1024
IsReset = true


一卡就是几个小时,不超时也不异常,就是停在这里。
会是什么原因呢?


发表于 2019-9-26 12:32:50 | 显示全部楼层
发表于 2019-9-26 14:23:16 | 显示全部楼层
应该是已经发生异常了吧,卡是线程本身卡了,这个需要具体看问题。方便的话可以多贴点代码看看,或者你描述一下思路
 楼主| 发表于 2019-9-26 17:09:42 | 显示全部楼层
代码基本上是这样的
[C#] 纯文本查看 复制代码
public static string GetHtml(string url)
{
	HttpHelper http = new HttpHelper();
	
	try
	{
            HttpItem item = new HttpItem()
            {
                URL = url,//URL     必需项
                Method = "GET",//URL     可选项 默认为Get
                Timeout = 300000,//连接超时时间     可选项默认为100000
                ReadWriteTimeout = 150000,//写入Post数据超时时间     可选项默认为30000
                IsToLower = false,//得到的HTML代码是否转成小写     可选项默认转小写
                KeepAlive = false,
                Cookie = "",//字符串Cookie     可选项
                UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36",//用户的浏览器类型,版本,操作系统     可选项有默认值
                Accept = "text/html, application/xhtml+xml, */*",//    可选项有默认值
                ContentType = "text/html",//返回类型    可选项有默认值
                Referer = "",//来源URL     可选项
                Allowautoredirect = true,//是否根据301跳转     可选项
                AutoRedirectCookie = false,//是否自动处理Cookie     可选项
                Connectionlimit = 1024,
                WebProxy = null,
                IsReset = true,

                ResultType = CsharpHttpHelper.Enum.ResultType.String,//返回数据类型,是Byte还是StringSystem.Net.HttpVersion.Version11
            };
			
			Console.WriteLine("Http 访问开始");
			
			HttpResult result = http.GetHtml(item);
			
			Console.WriteLine("Http 访问结束");
			
			if(result.StatusCode == System.Net.HttpStatusCode.OK)
			{
					return result.Html ?? null;
			}
				
	}
	catch(Exception ex)
	{
			Console.WriteLine(ex.Message);
	}
	
	return null;
}


然后WriteLine显示 Http 访问开始
不向下走了。

这个问题发现在新版本中,以前用1.9x的时候没这方面的问题,我最近换到2.2x然后换到2.4都会这样。

然后Console.WriteLine(ex.Message);
今天看日志发现2.4的比1.9x的少了一种 请求被中止: 操作超时。


 楼主| 发表于 2019-9-27 17:44:54 | 显示全部楼层
可以结贴了,编译环境的问题,在编译RELEASE的时候应该是编译器把代码给优化导致出现这个问题,用Debug的正常。
发表于 2019-9-28 20:45:59 | 显示全部楼层
您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

QQ|手机版|小黑屋|手机版|联系我们|关于我们|广告合作|苏飞论坛 ( 豫ICP备17001017号-1)

GMT+8, 2019-10-21 18:06

© 2017-2018

快速回复 返回顶部 返回列表