使用 webrequest 时如何保持连接?

发布于 2024-10-20 13:50:17 字数 3635 浏览 3 评论 0原文

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

天暗了我发光 2024-10-27 13:50:17

如果您在调试时认为它工作正常,请尝试 Thread.Sleep(10000)。

give a try to Thread.Sleep(10000), if you think it is working fine when you debug it.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文