2011-03-08 77 views
0

string strURL =(Request.IsSecureConnection?“https://website.com/Transaction.asmx”:“http://website.com/wTransaction.asmx”);如何在使用webrequest时保持连接活着?

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); 
     } 
    } 

我得到大线objPost.Close(错误); ......不寻常的错误是,当我通过线调试这行代码在Visual Studio 2010 ...代码使用缓慢F10 works ..但是当我只是运行程序,甚至快速调试程序...它会在该行抛出一个错误..它给出了一个错误,预计打开的连接被服务器关闭..

HELLLLPPP !!!

回答

0

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

+0

Thread.sleep does not work ... btw ...我检查了很多次...代码确实工作,当我一次调试一行...但是当我运行它..它给错误... – user550884 2011-03-08 10:53:13