C# 操作超时正常还是错

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 ;

 修改后的方法为:

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

25C# 操作超时正常还是错                catch (WebException wex)
26C# 操作超时正常还是错                {
27C# 操作超时正常还是错                    log.Debug("WebException=" + wex.ToString() + ",wex.Status=" + wex.Status);
28C# 操作超时正常还是错                    if (streamSend != null)
29C# 操作超时正常还是错                        streamSend.Close();
30C# 操作超时正常还是错                    streamSend = null;
31C# 操作超时正常还是错                    myRequest = null;
32C# 操作超时正常还是错                    return null;
33C# 操作超时正常还是错                }

34C# 操作超时正常还是错                catch (Exception ex)
35C# 操作超时正常还是错                {
36C# 操作超时正常还是错                    log.Debug("GetRequestStream=" + ex.ToString());
37C# 操作超时正常还是错                    if (streamSend != null)
38C# 操作超时正常还是错                        streamSend.Close();
39C# 操作超时正常还是错                    myRequest = null;
40C# 操作超时正常还是错                    return null;
41C# 操作超时正常还是错                }

42C# 操作超时正常还是错
43C# 操作超时正常还是错                byte[] byteArr = new byte[256];
44C# 操作超时正常还是错                Stream streamRequest = null;
45C# 操作超时正常还是错                try
46C# 操作超时正常还是错                {
47C# 操作超时正常还是错                    streamRequest = myRequest.GetResponse().GetResponseStream();
48C# 操作超时正常还是错                }

49C# 操作超时正常还是错                catch (Exception httpex)
50C# 操作超时正常还是错                {
51C# 操作超时正常还是错                    log.Debug("SendRequest=" + httpex.ToString());
52C# 操作超时正常还是错                    if (streamRequest != null)
53C# 操作超时正常还是错                        streamRequest.Close();
54C# 操作超时正常还是错                    myRequest = null;
55C# 操作超时正常还是错                    return null;
56C# 操作超时正常还是错                }

57C# 操作超时正常还是错                Bytes bytes = new Bytes();
58C# 操作超时正常还是错                int count = streamRequest.Read(byteArr, 0256);
59C# 操作超时正常还是错                while (count > 0)
60C# 操作超时正常还是错                {
61C# 操作超时正常还是错                    bytes.writeByteArr(Bytes.byteSub(byteArr, 0, count));
62C# 操作超时正常还是错                    count = streamRequest.Read(byteArr, 0256);
63C# 操作超时正常还是错                }

64C# 操作超时正常还是错                streamRequest.Close();
65C# 操作超时正常还是错                return bytes.getByte;
66C# 操作超时正常还是错            }

67C# 操作超时正常还是错            catch (Exception eee)
68C# 操作超时正常还是错            {
69C# 操作超时正常还是错                log.Debug("eee=" + eee.ToString() + eee.Source + eee.StackTrace);
70C# 操作超时正常还是错            }

71C# 操作超时正常还是错            return null;
72C# 操作超时正常还是错        }

 

太晚了,睡觉。 

你可能感兴趣的:(C#)