net(客户端)调用IIS(服务端)出现503后,就报操作超时错误

问题描述:
服务端环境:
IIS

客户端环境:
windowsxp + iis + .net

调用时出现如下错误:
System.Net.WebException: 远程服务器返回错误: (503) 服务器不可用。
   在 System.Net.HttpWebRequest.GetResponse()
   在 TestWebRequest.WebMessage.SendRequest(Byte[] data, String urlStr)

接着就出现如下错误:

System.Net.WebException: 操作超时
   在 System.Net.HttpWebRequest.GetRequestStream()

最后一直是这个错误

System.Net.WebException: 操作超时
   在 System.Net.HttpWebRequest.GetRequestStream()

当服务器恢复正常时,访问已经是200时,这个线程还是返回操作超时,经过N多测试,最后如下一行完美解决:

myRequest.ServicePoint.Expect100Continue = false;

修改后的方法为:

 1 public byte[] SendRequest(byte[] data, string urlStr)
 2        {
 3            try
 4            {
 5                Stream streamSend = null;
 6                HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(urlStr);
 7                myRequest.Method = "POST";
 8                myRequest.ContentType = "text/xml";
 9                myRequest.Accept = "*/*";
10                myRequest.Timeout = 2000;
11                myRequest.UserAgent = "Mozilla-Firefox-Spider(Wenanry)";
12                myRequest.ContentLength = data.Length;
13                //这个在Post的时候,一定要加上,如果服务器返回错误,他还会继续再去请求,不会使用之前的错误数据,做返回数据
14                myRequest.ServicePoint.Expect100Continue = false;
15
16                HttpRequestCachePolicy noCachePolicy = new HttpRequestCachePolicy(HttpRequestCacheLevel.NoCacheNoStore);
17                myRequest.CachePolicy = noCachePolicy;
18
19                try
20                {
21                    streamSend = myRequest.GetRequestStream();
22                    streamSend.Write(data, 0, data.Length);
23                    streamSend.Close();
24                }
25                catch (WebException wex)
26                {
27                    log.Debug("WebException=" + wex.ToString() + ",wex.Status=" + wex.Status);
28                    if (streamSend != null)
29                        streamSend.Close();
30                    streamSend = null;
31                    myRequest = null;
32                    return null;
33                }
34                catch (Exception ex)
35                {
36                    log.Debug("GetRequestStream=" + ex.ToString());
37                    if (streamSend != null)
38                        streamSend.Close();
39                    myRequest = null;
40                    return null;
41                }
42
43                byte[] byteArr = new byte[256];
44                Stream streamRequest = null;
45                try
46                {
47                    streamRequest = myRequest.GetResponse().GetResponseStream();
48                }
49                catch (Exception httpex)
50                {
51                    log.Debug("SendRequest=" + httpex.ToString());
52                    if (streamRequest != null)
53                        streamRequest.Close();
54                    myRequest = null;
55                    return null;
56                }
57                Bytes bytes = new Bytes();
58                int count = streamRequest.Read(byteArr, 0, 256);
59                while (count > 0)
60                {
61                    bytes.writeByteArr(Bytes.byteSub(byteArr, 0, count));
62                    count = streamRequest.Read(byteArr, 0, 256);
63                }
64                streamRequest.Close();
65                return bytes.getByte;
66            }
67            catch (Exception eee)
68            {
69                log.Debug("eee=" + eee.ToString() + eee.Source + eee.StackTrace);
70            }
71            return null;
72        }

太晚了,睡觉。

C# 操作超时正常还是错的更多相关文章

  1. ENSP NE40E 报错(NE1启动操作超时,请检查与服务器链接后重试!)

    前言:某网友淘宝找我咨询NE40E启动失败的问题,事后我整理的处理过程,供各位同行参考. 系统版本:windows 10 软件版本: ENSP:V100R003C00 virtual BOX:5.2. ...

  2. wcf 请考虑增加操作超时

    发送到 net.tcp://192.168.1.18:8732/CallbackService 的请求操作在配置的超时(00:00:59.9879994)内未收到回复. 分配给此操作的时间可能已经是更 ...

  3. C#用WebClient下载File时操作超时的问题

    原文:C#用WebClient下载File时操作超时的问题 今天很SB,被这个问题卡住了.那段代码也是网上找的.结果发现只能下载一个文件,第二次下载的时候就会出现“操作超时”的问题. 这个是原代码: ...

  4. 同花顺核新下单程序的"界面不操作超时时间"的设定

    "界面不操作超时时间"的设定 同花顺核新下单程序的'界面不操作超时时间'的设定 系统> 系统设置> 界面设置> 界面不操作超时时间(分): 在这个输入框里填上个3 ...

  5. HttpWebRequest中GetResponse或者说GetRequestStream偶尔超时,或者是各种操作超时造成的假死的一些解决方案

    今天用了将近一天的时间来查找这个问题的存在,不停的百度查找原因测试原因,发现解决方案很是简单,不过最好还好哦啊都解决了,在这里纪录一下,希望可以帮到你们 payload = System.Text.E ...

  6. chrome无法登陆账号,显示操作超时的解决方案

    起因 今天重装了下windows操作系统,准备登陆chrome浏览器,以同步各种插件(你懂的),结果是...无法登陆账号,显示操作超时,真是无语了. 碰到了这个问题第一个直觉是:FQ.突然想到如果修改 ...

  7. C# post数据时 出现如下错误: System.Net.WebException: 操作超时

    net(客户端)调用IIS(服务端)出现503后,就报操作超时错误 问题描述: 服务端环境: IIS 客户端环境: windowsxp + iis + .net 调用时出现如下错误: System.N ...

  8. delete操作字符串会报错吗?

    其实是不会的."delete只能对对象属性进行操作"的说法是错误的,严谨来说,delete可以对任意变量类型进行操作,只不过只有对对象的属性才能操作成功,对其他变量类型操作失败罢了 ...

  9. windows下Eclipse操作MapReduce例子报错:Failed to set permissions of path: \tmp\hadoop-Jerome\mapred\staging\

    windows下Eclipse操作MapReduce例子报错: 14/05/18 22:05:29 WARN util.NativeCodeLoader: Unable to load native- ...

随机推荐

  1. 简单工厂模式(Factory)

    设计模式序言:这是开始学习设计模式的第一步,也是相对简单的一个设计模式,简单工厂设计模式. 简单工厂就是将业务进行封装,减少代码之间的耦合度,使代码更易于扩展和维护. 以下是简单工厂设计模式的图解: ...

  2. websocket、文件上传

    支持情况: 浏览器实现了websocket的浏览器:Chrome Supported in version 4+ Firefox Supported in version 4+ Internet Ex ...

  3. Xamarin XAML语言教程构建ControlTemplate控件模板 (四)

    Xamarin XAML语言教程构建ControlTemplate控件模板 (四) 2.在页面级别中构建控件模板 如果开发者要在页面级别中构建控件模板,首先必须将ResourceDictionary添 ...

  4. python3-os模块中的os.walk(目录树生成器)

    #先看源码 def walk(top, topdown=True, onerror=None, followlinks=False): """Directory tree ...

  5. URL 和URI的区别

    1.统一资源标志符URI就是在某一规则下能把一个资源独一无二地标识出来. URL:(Uniform/Universal Resource Locator 的缩写,统一资源定位符). URI:(Unif ...

  6. ACM--素数距离问题

    题目描述:现在给出你一些数,要求你写出一个程序,输出这些整数相邻最近的素数,并输出其相距长度.如果左右有等距离长度素数,则输出左侧的值及相应距离.如果输入的整数本身就是素数,则输出该素数本身,距离输出 ...

  7. VMware三种网络模式组网(转)

    VMware为我们提供了三种网络工作模式,它们分别是:Bridged(桥接模式).NAT(网络地址转换模式).Host-Only(仅主机模式). 打开VMware虚拟机,我们可以在选项栏的“编辑”下的 ...

  8. delphi执行cmd命令和bat文件

    转载地址:http://blog.csdn.net/hutao1101175783/article/details/42807063 cmd:='echo d | Xcopy '+BasePath+' ...

  9. centos6.8下安装部署LNMP(备注:nginx1.8.0+php5.6.10+mysql5.6.12)

    在平时运维工作中,经常需要用到LNMP应用框架.以下对LNMP环境部署记录下: 1)前期准备:为了安装顺利,建议先使用yum安装依赖库[root@opd ~]#yum install -y make ...

  10. 【C/C++学院】0723-32位与64位/调戏窗体程序/数据分离算法/内存检索/二分查找法/myVC

    [送给在路上的程序猿] 对于一个开发人员而言,能够胜任系统中随意一个模块的开发是其核心价值的体现. 对于一个架构师而言,掌握各种语言的优势并能够运用到系统中,由此简化系统的开发,是其架构生涯的第一步. ...