使用 webrequest 时如何保持连接?
string strURL = (Request.IsSecureConnection ? "https://website.com/Transaction.asmx" : "http://website.com/wTransaction.asmx");
string strCommand = clsMisc.strGetDataFromPage(this, "c", "", PostMethod.BOTH); string strAppCode = clsMisc.strGetDataFromPage(this, "a", "WEBIN", PostMethod.BOTH); string strVenueCode = clsMisc.strGetDataFromPage(this, "v", "", PostMethod.BOTH); long transcationid= long.Parse(clsMisc.strGetDataFromPage(this, "t", "0", PostMethod.BOTH)); 字符串 strParam1 = clsMisc.strGetDataFromPage(this, "p1", "", PostMethod.BOTH); string strParam2 = clsMisc.strGetDataFromPage(this, "p2", "", PostMethod.BOTH); 字符串 strParam3 = clsMisc.strGetDataFromPage(this, "p3", "", PostMethod.BOTH); 字符串 strParam4 = clsMisc.strGetDataFromPage(this, "p4", "", PostMethod.BOTH);
StringBuilder sbrPost = new StringBuilder();
string strIPAddress = Request.UserHostAddress.ToString();
if (Request.Headers.ToString().Contains("&X-Forwarded-For="))
{
strIPAddress = Request.Headers["X-Forwarded-For"].ToString();
}
strAppCode = "|APPCODE=" + strAppCode + "|IPADDRESS=" + strIPAddress + "|";
//strAppCode = "|APPCODE=" + strAppCode + "|IPADDRESS=" + Request.UserHostAddress.ToString() + "|";
sbrPost.Append("<?xml version=\"1.0\" encoding=\"utf-8\"?>");
sbrPost.Append("<soap12:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soap12=\"http://www.w3.org/2003/05/soap-envelope\"><soap12:Body><objExecute xmlns=\"http://www.website.com/\">");
sbrPost.Append("<strAppCode>" + strAppCode + "</strAppCode>");
sbrPost.Append("<lngTransactionIdentifier>" + lngTransId + "</lngTransactionIdentifier>");
sbrPost.Append("<strCommand>" + strCommand + "</strCommand>");
sbrPost.Append("<strParam1>" + strParam1 + "</strParam1>");
sbrPost.Append("<strParam2>" + strParam2 + "</strParam2>");
sbrPost.Append("<strParam3>" + strParam3 + "</strParam3>");
sbrPost.Append("<strParam4>" + strParam4 + "</strParam4>");
</objExecute></soap12:Body></soap12:Envelope>");
string strPost = sbrPost.ToString();
WebRequest objReq = WebRequest.Create(strURL);
WebResponse objRes;
StreamReader smrRes;
byte[] bytData = Encoding.UTF8.GetBytes(strPost);
objReq.Method = "POST";
objReq.ContentType = "application/soap+xml";
objReq.ContentLength = bytData.Length;
objReq.Timeout = 600000; // 10 minutes
Stream objPost = objReq.GetRequestStream();
objPost.Write(bytData, 0, bytData.Length);
objPost.Close();
objRes = objReq.GetResponse();
smrRes = new StreamReader(objRes.GetResponseStream());
Response.Write(smrRes.ReadToEnd());
Response.ContentType = "text/xml";
smrRes.Close();
Response.End();
}
catch (Exception err)
{
clsLog.blnLogError(strErrorPage,strErrorMethod, "",err.Message);
}
}
我在 da line objPost.Close();.....不寻常的错误是,当我在 Visual Studio 2010 中使用 F10 缓慢地逐行调试此代码时......代码可以工作......但是当我只是运行程序,甚至快速调试程序...它在那一行抛出一个错误..它给出一个错误,表明预期打开的连接已被服务器关闭..HELLLLPPP
!
string strURL = (Request.IsSecureConnection ? "https://website.com/Transaction.asmx" : "http://website.com/wTransaction.asmx");
string strCommand = clsMisc.strGetDataFromPage(this, "c", "", PostMethod.BOTH);
string strAppCode = clsMisc.strGetDataFromPage(this, "a", "WEBIN", PostMethod.BOTH);
string strVenueCode = clsMisc.strGetDataFromPage(this, "v", "", PostMethod.BOTH);
long transcationid= long.Parse(clsMisc.strGetDataFromPage(this, "t", "0", PostMethod.BOTH));
string strParam1 = clsMisc.strGetDataFromPage(this, "p1", "", PostMethod.BOTH);
string strParam2 = clsMisc.strGetDataFromPage(this, "p2", "", PostMethod.BOTH);
string strParam3 = clsMisc.strGetDataFromPage(this, "p3", "", PostMethod.BOTH);
string strParam4 = clsMisc.strGetDataFromPage(this, "p4", "", PostMethod.BOTH);
StringBuilder sbrPost = new StringBuilder();
string strIPAddress = Request.UserHostAddress.ToString();
if (Request.Headers.ToString().Contains("&X-Forwarded-For="))
{
strIPAddress = Request.Headers["X-Forwarded-For"].ToString();
}
strAppCode = "|APPCODE=" + strAppCode + "|IPADDRESS=" + strIPAddress + "|";
//strAppCode = "|APPCODE=" + strAppCode + "|IPADDRESS=" + Request.UserHostAddress.ToString() + "|";
sbrPost.Append("<?xml version=\"1.0\" encoding=\"utf-8\"?>");
sbrPost.Append("<soap12:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soap12=\"http://www.w3.org/2003/05/soap-envelope\"><soap12:Body><objExecute xmlns=\"http://www.website.com/\">");
sbrPost.Append("<strAppCode>" + strAppCode + "</strAppCode>");
sbrPost.Append("<lngTransactionIdentifier>" + lngTransId + "</lngTransactionIdentifier>");
sbrPost.Append("<strCommand>" + strCommand + "</strCommand>");
sbrPost.Append("<strParam1>" + strParam1 + "</strParam1>");
sbrPost.Append("<strParam2>" + strParam2 + "</strParam2>");
sbrPost.Append("<strParam3>" + strParam3 + "</strParam3>");
sbrPost.Append("<strParam4>" + strParam4 + "</strParam4>");
</objExecute></soap12:Body></soap12:Envelope>");
string strPost = sbrPost.ToString();
WebRequest objReq = WebRequest.Create(strURL);
WebResponse objRes;
StreamReader smrRes;
byte[] bytData = Encoding.UTF8.GetBytes(strPost);
objReq.Method = "POST";
objReq.ContentType = "application/soap+xml";
objReq.ContentLength = bytData.Length;
objReq.Timeout = 600000; // 10 minutes
Stream objPost = objReq.GetRequestStream();
objPost.Write(bytData, 0, bytData.Length);
objPost.Close();
objRes = objReq.GetResponse();
smrRes = new StreamReader(objRes.GetResponseStream());
Response.Write(smrRes.ReadToEnd());
Response.ContentType = "text/xml";
smrRes.Close();
Response.End();
}
catch (Exception err)
{
clsLog.blnLogError(strErrorPage,strErrorMethod, "",err.Message);
}
}
I get an error on da line objPost.Close();.....the unusual error is that when I debug this code line by line slowly using F10 in visual studio 2010...the code works..but when I just run the program or even debug the program fast...it throws an error at that line.. it gives an error that the connection which was expected to be open was closed by the server..
HELLLLPPP!!!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
如果您在调试时认为它工作正常,请尝试 Thread.Sleep(10000)。
give a try to Thread.Sleep(10000), if you think it is working fine when you debug it.