我在我的基於Web的應用程序中使用了兩年多的ASP.Net類中有一些代碼。我正在尋求在命令行工具中執行一些類似的業務功能。我在兩個應用程序中都使用相同的代碼,但命令行應用程序在代碼底部附近對「GetRequestStream」的調用超時。調用GetRequestStream在ASP.Net中工作,但不能用於控制檯應用程序
如果我關閉了req和req2,我已經能夠調用GetRequestStream來工作了。但是,爲了req3進行身份驗證,它需要req和req2保持打開狀態。所以,如果我離開req和req2打開,GetRequestStream超時。如果關閉req和req2,則對GetRequestStream的調用起作用,但req3無法進行身份驗證。
正如我所提到的,完全相同的代碼工作正常,基於Web的ASP.Net應用程序。只有當我使用這個類將它構建爲基於控制檯的應用程序時,我是否會遇到這些問題。
我在想這應該是連接的東西,但我對從.Net構建命令行應用程序還是比較陌生的。
任何幫助,將不勝感激。
string uri = baseUri + "auth/authrequired";
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(uri);
req.Timeout = 1000000;
req.Proxy = null;
req.CookieContainer = cc;
var MyWebResponse = (WebResponse)req.GetResponse();
uri = baseUri + "authenticated/identity";
HttpWebRequest req2 = (HttpWebRequest)WebRequest.Create(uri);
req2.Timeout = 1000000;
req2.Proxy = null;
req2.CookieContainer = cc;
MyWebResponse = req2.GetResponse();
uri = baseUri + "j_security_check";
string reqParams = "j_username=" + "jmclaughlin" + "&j_password=" + "jmclaughlin";
byte[] reqData = Encoding.UTF8.GetBytes(reqParams);
HttpWebRequest req3 = (HttpWebRequest)WebRequest.Create(uri);
req3.Timeout = 1000000;
req3.Proxy = null;
req3.CookieContainer = cc;
req3.Method = "POST";
req3.ContentType = "application/x-www-form-urlencoded";
req3.AllowAutoRedirect = true;
req3.ContentLength = reqData.Length;
using (var s = req3.GetRequestStream())
s.Write(reqData, 0, reqData.Length);
MyWebResponse = req3.GetResponse();
謝謝Jon。我認爲這是垃圾收集爲我處理的事情。這工作得很好! –