最近我们使用.NET3.5HttpWebRequest会报操作已超时但使用.NET4.0版本及以上却可以正常访问。

一段简单的代码如下:

string returnData = "";

try
{

HttpWebRequest webReq = (HttpWebRequest)WebRequest.Create(url);

webReq.Timeout = 30000;
webReq.KeepAlive = true;
webReq.Method = "POST";
webReq.ContentType = "application/xml; charset=utf-8";
webReq.ContentLength = buffer.Length;
webReq.ServicePoint.Expect100Continue = false;
Stream reqStream = webReq.GetRequestStream();
reqStream.Write(buffer, 0, buffer.Length);
reqStream.Close();

using (HttpWebResponse webResp = (HttpWebResponse)webReq.GetResponse())
{

using (StreamReader sr = new StreamReader(webResp.GetResponseStream(), Encoding.GetEncoding("utf-8")))
{
returnData = sr.ReadToEnd();
}
}

}
catch (Exception ex)

{

}

在两个不同.NET版本下3.5会报操作超时,4.0版本及以上可以正常访问

后来我们发现请求的URL是HTTPS。我们只是改变了HTTP和HTTPS的代码又试了一次。但改变HTTPS HTTP不是解决方案。它是一个快速修复。
使用HTTPS的网站在浏览器中工作。我们得到了来自浏览器的所有响应。然而,我们得到这个错误和HttpWebRequest。HttpWebRequest曾与HTTP URL而不使用HTTPS。
后来我们开始调查这个问题。我们确保我们的防火墙配置正确。我们联系了第三方的人说他们不使用HTTPS请求。很显然,有一些问题。我们发现HttpWebRequest卡在密钥交换阶。
解决方案
然后我们被迫使用HttpWebRequest ssl3代替TLS。
servicepointmanager.securityprotocol=securityprotocoltype.ssl3;
这里的指定HttpWebRequest的安全协议可以解决.NET3.5版本操作超时的问题,即第三方进行了协议规范。而.NET3.5版本和4.0及以上版本默认协议是有一些差异的。由此原因引发的请求超时

HttpWebRequest操作已超时的更多相关文章

  1. Dynamics 365执行操作报SQL Server已超时,更改这个超时设置的方法

    本人微信公众号:微软动态CRM专家罗勇 ,回复291或者20190110可方便获取本文,同时可以在第一间得到我发布的最新博文信息,follow me!我的网站是 www.luoyong.me . 当执 ...

  2. DbCommand :执行超时已过期。完成操作之前已超时或服务器未响应。

    问题:“Timeout 时间已到.在操作完成之前超时时间已过或服务器未响应.”的解决方法 在一个链接数据库的时候,老是出现超时的错误:执行超时已过期.完成操作之前已超时或服务器未响应. 就是给这个链接 ...

  3. Outlook 2007无法打开链接"由于本机的限制 该操作已被取消"

    编写人:CC阿爸 2014-2-17 近来在日常维护中,经常性的遇到用户在outlook中打开链接,提示[由于本机的限制,该操作已被取消],第一次的在网上搜索到解决办法后, 第二次再处理时,又没能记住 ...

  4. ECSHOP后台登陆后一段时间不操作就超时的解决方法

    ECSHOP后台登陆后一段时间不操作就超时的解决方法 ECSHOP教程/ ecshop教程网(www.ecshop119.com) 2012-05-27   客户生意比较好,因此比较忙,常常不在电脑前 ...

  5. 使用SIGALRM信号为阻塞操作设置超时

    我们经常会遇到为阻塞操作设置超时的问题,比如说阻塞套接字read读取设置10秒超时,其中一个办法就是调用alarm函数,它在指定超时时期产生SIGALRM信号,使得阻塞操作中断. 但其弊端在于: 1. ...

  6. 安全错误使用CORS在IE10与Node和Express及XMLHttpRequest: 网络错误 0x4c7, 操作已被用户取消

    在IE下:VUE项目,后台替换为https请求之后,vue热更新请求挂起,控制台报错:XMLHttpRequest: 网络错误 0x4c7, 操作已被用户取消.但是chrome与Firefox正常 当 ...

  7. [C#.net]SqlDataAdapter 执行超时已过期 完成操作之前已超时或服务器未响应

    随着数据库数据的不断增大,查询时间也随之增长.而客户端与数据库连接时间以及命令的执行时间都是有限的.默认为30s.所以在查询数据的时候,程序会出现 “超时时间已到.在操作完成之前超时时间已过或服务器未 ...

  8. ADO.NET 使用DELETE语句批量删除操作,提示超时,删除失败,几种优化解决思路

    起因是如此简单的一句sql 提示:Timeout 时间已到.在操作完成之前超时时间已过或服务器未响应. 提供几种解决思路: 1.检查WHERE条件中字段是否已建索引 2.检查是否被其他表引用,引用表外 ...

  9. Java中使用elasticsearch搜索引擎实现简单查询、修改等操作-已在项目中实际应用

    以下的操作环境为:jdk:1.8:elasticsearch:5.2.0 maven架包下载坐标为: <dependency> <groupId>org.elasticsear ...

随机推荐

  1. linux 下 启动oracle

    [root@csyang ~]# su - oracle #首先su到oracle用户 [oracle@csyang ~]$ sqlplus sys/passwd as sysdba #使用sys用户 ...

  2. TypeScript基本知识(为学习AngularJS2框架做个小铺垫)

    学习angularjs2框架,需要了解一些TypeScript知识点,基本了解下面这几个知识点学习AngularJS2 就够用了 1.TypeScript 1.1显示类型的定义 TypeScript类 ...

  3. Android 窗口全屏

    全屏getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); 取消全屏 getWindow().clearFlags(Wind ...

  4. ST-4

    1.(49-7)使用下面的方法printPrimes()完成后面的问题: (a)为printPrimes()方法画控制流图. (b)考虑测试用例t1=(n=3)和t2=(n=5).即使这些测试用例游历 ...

  5. 回锅的美食:JSP+EL+JSTL大杂烩汤

    title: Servlet之JSP tags: [] notebook: javaWEB --- JSP是什么 ? JSP就是Servlet,全名是"JavaServer Pages&qu ...

  6. makefile文件模板介绍

    1    src : = $(shell  ls  *.c)2    objs : = $(patsubst  %.c, %.o, $(src))3    test : $(objs)4       ...

  7. python基础:各种类型的转换

    1.str转dict #借助eval,dict str="{"data":"123","result":"ok" ...

  8. 《Android进阶》之第五篇 Fragment 的使用

    http://blog.csdn.net/lmj623565791/article/details/37970961 1.Fragment的产生与介绍 Android运行在各种各样的设备中,有小屏幕的 ...

  9. 《安卓网络编程》之第四篇 处理URL地址

    在Android手机系统中,可以通过URL地址获取网络资源.在URL类的众多方法中,可以使用openStream()方法来读取该URL资源的输入流InputStream.在此方法的基础上可以引申出很多 ...

  10. 0Raspi开启root权限并登录使用

    sudo passwd root sudo passwd --unlock root su root  切换回用 su pi   开始登陆选择root preferences>raspberry ...