如题:System.Net.WebException: 基础连接已经关闭: 连接被意外关闭。代码如下:
private string CreatePostHttpResponse(string url, string strParam)
{ HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
//string s = "要提交的数据";
byte[] requestBytes = System.Text.Encoding.ASCII.GetBytes(strParam );
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded;charset=gb2312";
request.ContentLength = requestBytes.Length;
Stream requestStream = request.GetRequestStream();
requestStream.Write(requestBytes, 0, requestBytes.Length);
requestStream.Close(); HttpWebResponse response = (HttpWebResponse)request.GetResponse();
var myResponseStream = response.GetResponseStream();
StreamReader myStreamReader = new StreamReader(myResponseStream, System.Text.Encoding.GetEncoding ("gb2312"));
string retString = myStreamReader.ReadToEnd();
myResponseStream.Close();
myStreamReader.Close();
response.Close();
return retString;
}
如何解决???
private string CreatePostHttpResponse(string url, string strParam)
{ HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
//string s = "要提交的数据";
byte[] requestBytes = System.Text.Encoding.ASCII.GetBytes(strParam );
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded;charset=gb2312";
request.ContentLength = requestBytes.Length;
Stream requestStream = request.GetRequestStream();
requestStream.Write(requestBytes, 0, requestBytes.Length);
requestStream.Close(); HttpWebResponse response = (HttpWebResponse)request.GetResponse();
var myResponseStream = response.GetResponseStream();
StreamReader myStreamReader = new StreamReader(myResponseStream, System.Text.Encoding.GetEncoding ("gb2312"));
string retString = myStreamReader.ReadToEnd();
myResponseStream.Close();
myStreamReader.Close();
response.Close();
return retString;
}
如何解决???
myResponseStream.Close();
myStreamReader.Close();
response.Close();
你 关 毛 呀
全 放到 最后 关 搞 不 懂关系 不要
显得 自己 好 有 水平
requestStream关早了
myStreamReader.Close();
这两个最好换下顺序。检查url是否是可访问的,自己设置断点再跟踪一下究竟是哪里抛出的异常。
requestStream.Close();
我也举得这句有问题,应该不要的。或者你放到后面去
{
LogWrite logWrite = null;
try
{ string sClientIp = ((IPEndPoint)this.m_socket.RemoteEndPoint).Address.ToString();
string sConnectTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); string sMessage = ReceiveMessage();
logWrite = new LogWrite("Update", "Info", "接收到客户端:" + sClientIp + "发来的报文:[" + sMessage + "]", ""); string sRequestType = sMessage.Substring(0, 2); switch (sRequestType)
{
case "00":
string sUpdateFilesList = "";
try
{
// sUpdateFilesList += GetUpdateFilesList( Application.StartupPath );
sUpdateFilesList += GetUpdateFilesList();
if (sUpdateFilesList != "")
{
sUpdateFilesList = sUpdateFilesList.Substring(0, sUpdateFilesList.Length - 1);
}
}
catch (GetUpdateFilesListException getEx)
{
logWrite = new LogWrite("Update", getEx, "在获得更新文件列表时出错。");
sUpdateFilesList += "Error";
}
logWrite = new LogWrite("Update", "Info", "要发送给客户端:" + sClientIp + "的报文为:[" + sUpdateFilesList + "]");
SendMessage("00" + sUpdateFilesList);
break;
case "01":
string sFileName = sMessage.Substring(2);
FileStreamWrap fileStreamWrap = null;
BinaryReader bReader = null;
NetworkStreamWrap networkStreamWrap = null;
try
{
fileStreamWrap = new FileStreamWrap(Application.StartupPath + "\\" + sFileName, FileMode.Open, FileAccess.Read, FileShare.Read, LOGDIR); bReader = new BinaryReader(fileStreamWrap.fileStream); System.Int64 iFileLen = bReader.BaseStream.Length;
String sMsgLen = ((Int64)(iFileLen + 19 + 2 + 1)).ToString(); DateTime timeFile = FileWrap.GetLastWriteTime(Application.StartupPath + "\\" + sFileName, LOGDIR);
String sSend = sMsgLen.PadLeft(10, '0') + "01" + timeFile.ToString("yyyy-MM-dd HH:mm:ss") + "|";
logWrite = new LogWrite("Update", "Info", "发送给客户端:" + sClientIp + "的文件内容报文中,前段的报文内容:[" + sSend + "]");
byte[] arrbyteSend = Encoding.Default.GetBytes(sSend);
networkStreamWrap = new NetworkStreamWrap(this.m_socket, LOGDIR);
networkStreamWrap.Write(arrbyteSend, 0, arrbyteSend.Length, LOGDIR);
logWrite = new LogWrite("Update", "Info", "成功将文件内容报文中前段的报文内容发送给客户端:" + sClientIp);
logWrite = new LogWrite("Update", "Info", "开始将文件:" + sFileName + "的内容发送给客户端:" + sClientIp);
arrbyteSend = new Byte[iFileLen];
bReader.Read(arrbyteSend, 0, arrbyteSend.Length);
networkStreamWrap.Write(arrbyteSend, 0, arrbyteSend.Length, LOGDIR);
logWrite = new LogWrite("Update", "Info", "成功将文件:" + sFileName + "的内容发送给客户端:" + sClientIp); }
catch (FileAccessException fileAccessEx)
{
logWrite = new LogWrite("Update", fileAccessEx, "文件访问错误,因此将空报文返回给客户端。");
SendMessage("01");
}
catch (StreamAccessException streamAccessEx)
{
logWrite = new LogWrite("Update", streamAccessEx, "文件访问错误,因此将空报文返回给客户端。");
SendMessage("01");
}
finally
{
if (bReader != null)
{
bReader.Close();
}
if (fileStreamWrap != null)
{
fileStreamWrap.Close();
}
if (networkStreamWrap != null)
{
networkStreamWrap.Close();
}
}
break;看 不 看得 懂 看 你 自己 了 上帝 保佑你