首页 > 其他 > 详细

C# 操作超时正常还是错

时间:2014-04-15 10:03:24      阅读:567      评论:0      收藏:0      [点我收藏+]

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;

 修改后的方法为:

bubuko.com,布布扣
bubuko.com,布布扣
 1bubuko.com,布布扣 public byte[] SendRequest(byte[] data, string urlStr)
 2bubuko.com,布布扣        {
 3bubuko.com,布布扣            try
 4bubuko.com,布布扣            {
 5bubuko.com,布布扣                Stream streamSend = null;
 6bubuko.com,布布扣                HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(urlStr);
 7bubuko.com,布布扣                myRequest.Method = "POST";
 8bubuko.com,布布扣                myRequest.ContentType = "text/xml";
 9bubuko.com,布布扣                myRequest.Accept = "*/*";
10bubuko.com,布布扣                myRequest.Timeout = 2000;
11bubuko.com,布布扣                myRequest.UserAgent = "Mozilla-Firefox-Spider(Wenanry)";
12bubuko.com,布布扣                myRequest.ContentLength = data.Length;
13bubuko.com,布布扣                //这个在Post的时候,一定要加上,如果服务器返回错误,他还会继续再去请求,不会使用之前的错误数据,做返回数据
14bubuko.com,布布扣                myRequest.ServicePoint.Expect100Continue = false;
15bubuko.com,布布扣
16bubuko.com,布布扣                HttpRequestCachePolicy noCachePolicy = new HttpRequestCachePolicy(HttpRequestCacheLevel.NoCacheNoStore);
17bubuko.com,布布扣                myRequest.CachePolicy = noCachePolicy;
18bubuko.com,布布扣
19bubuko.com,布布扣                try
20bubuko.com,布布扣                {
21bubuko.com,布布扣                    streamSend = myRequest.GetRequestStream();
22bubuko.com,布布扣                    streamSend.Write(data, 0, data.Length);
23bubuko.com,布布扣                    streamSend.Close();
24bubuko.com,布布扣                }

25bubuko.com,布布扣                catch (WebException wex)
26bubuko.com,布布扣                {
27bubuko.com,布布扣                    log.Debug("WebException=" + wex.ToString() + ",wex.Status=" + wex.Status);
28bubuko.com,布布扣                    if (streamSend != null)
29bubuko.com,布布扣                        streamSend.Close();
30bubuko.com,布布扣                    streamSend = null;
31bubuko.com,布布扣                    myRequest = null;
32bubuko.com,布布扣                    return null;
33bubuko.com,布布扣                }

34bubuko.com,布布扣                catch (Exception ex)
35bubuko.com,布布扣                {
36bubuko.com,布布扣                    log.Debug("GetRequestStream=" + ex.ToString());
37bubuko.com,布布扣                    if (streamSend != null)
38bubuko.com,布布扣                        streamSend.Close();
39bubuko.com,布布扣                    myRequest = null;
40bubuko.com,布布扣                    return null;
41bubuko.com,布布扣                }

42bubuko.com,布布扣
43bubuko.com,布布扣                byte[] byteArr = new byte[256];
44bubuko.com,布布扣                Stream streamRequest = null;
45bubuko.com,布布扣                try
46bubuko.com,布布扣                {
47bubuko.com,布布扣                    streamRequest = myRequest.GetResponse().GetResponseStream();
48bubuko.com,布布扣                }

49bubuko.com,布布扣                catch (Exception httpex)
50bubuko.com,布布扣                {
51bubuko.com,布布扣                    log.Debug("SendRequest=" + httpex.ToString());
52bubuko.com,布布扣                    if (streamRequest != null)
53bubuko.com,布布扣                        streamRequest.Close();
54bubuko.com,布布扣                    myRequest = null;
55bubuko.com,布布扣                    return null;
56bubuko.com,布布扣                }

57bubuko.com,布布扣                Bytes bytes = new Bytes();
58bubuko.com,布布扣                int count = streamRequest.Read(byteArr, 0256);
59bubuko.com,布布扣                while (count > 0)
60bubuko.com,布布扣                {
61bubuko.com,布布扣                    bytes.writeByteArr(Bytes.byteSub(byteArr, 0, count));
62bubuko.com,布布扣                    count = streamRequest.Read(byteArr, 0256);
63bubuko.com,布布扣                }

64bubuko.com,布布扣                streamRequest.Close();
65bubuko.com,布布扣                return bytes.getByte;
66bubuko.com,布布扣            }

67bubuko.com,布布扣            catch (Exception eee)
68bubuko.com,布布扣            {
69bubuko.com,布布扣                log.Debug("eee=" + eee.ToString() + eee.Source + eee.StackTrace);
70bubuko.com,布布扣            }

71bubuko.com,布布扣            return null;
72bubuko.com,布布扣        }
bubuko.com,布布扣

 

太晚了,睡觉。 

C# 操作超时正常还是错,布布扣,bubuko.com

C# 操作超时正常还是错

原文:http://www.cnblogs.com/wangchuang/p/3664131.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!