C# post数据时 出现如下错误: System.Net.WebException: 操作超时
2015-07-01 11:38
691 查看
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多测试,最后如下一行完美解决:
修改后的方法为:
问题描述:
服务端环境:
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;
修改后的方法为:
public byte[] SendRequest(byte[] data, string urlStr) { try { Stream streamSend = null; HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(urlStr); myRequest.Method = "POST"; myRequest.ContentType = "text/xml"; myRequest.Accept = "*/*"; myRequest.Timeout = 2000; myRequest.UserAgent = "Mozilla-Firefox-Spider(Wenanry)"; myRequest.ContentLength = data.Length; //这个在Post的时候,一定要加上,如果服务器返回错误,他还会继续再去请求,不会使用之前的错误数据,做返回数据 myRequest.ServicePoint.Expect100Continue = false; HttpRequestCachePolicy noCachePolicy = new HttpRequestCachePolicy(HttpRequestCacheLevel.NoCacheNoStore); myRequest.CachePolicy = noCachePolicy; try { streamSend = myRequest.GetRequestStream(); streamSend.Write(data, 0, data.Length); streamSend.Close(); } catch (WebException wex) { log.Debug("WebException=" + wex.ToString() + ",wex.Status=" + wex.Status); if (streamSend != null) streamSend.Close(); streamSend = null; myRequest = null; return null; } catch (Exception ex) { log.Debug("GetRequestStream=" + ex.ToString()); if (streamSend != null) streamSend.Close(); myRequest = null; return null; } byte[] byteArr = new byte[256]; Stream streamRequest = null; try { streamRequest = myRequest.GetResponse().GetResponseStream(); } catch (Exception httpex) { log.Debug("SendRequest=" + httpex.ToString()); if (streamRequest != null) streamRequest.Close(); myRequest = null; return null; } Bytes bytes = new Bytes(); int count = streamRequest.Read(byteArr, 0, 256); while (count > 0) { bytes.writeByteArr(Bytes.byteSub(byteArr, 0, count)); count = streamRequest.Read(byteArr, 0, 256); } streamRequest.Close(); return bytes.getByte; } catch (Exception eee) { log.Debug("eee=" + eee.ToString() + eee.Source + eee.StackTrace); } return null; }
相关文章推荐
- C# Deflate 压缩与解压缩
- C# 正则表达式抓取网页上某个标签的内容,并替换链接地址和图片地址
- C# 知识回顾 - 装箱与拆箱
- C# ini 文件解析库
- C#算法之判断一个字符串是否是对称字符串
- C#算法之判断一个字符串是否是对称字符串
- C#窗体传值方法总结
- C#中图片BYTE[]和base64string的相互转换
- C# Stream 和 byte[] 之间的转换
- C#+ArcEngine加载shape、栅格、access、mxd文件
- C#中一些字符串操作的常用用法
- C#关闭进程树
- C#逐行读取文件的方法
- 浅析C#深拷贝与浅拷贝
- C#下查找并杀死子进程(进程树)
- C#浅拷贝与深拷贝区别
- C# 写日志
- c#全宇宙最牛的编程软件
- 结构及其使用 struct (C#)
- C#显示当前日期时间