2013-06-26 90 views
3

我的asp.net 2.0應用程序對另一個URL執行內部https請求,以在響應中獲取有效的cookie。https請求失敗,使用.Net Framework 2.0,但使用.Net 4.0

當我在.Net 2.0框架中測試這個時,沒有返回cookie,但是使用.Net 4它可以工作。答覆中沒有例外,但我的直覺是與公司代理和https相關。除了升級到.Net 4.0(巨大的任務)之外,還有什麼建議嗎?

 string ticketissuerURL = "https://Securesite";    
     ServicePointManager.Expect100Continue = false; 

     HttpWebRequest request = (HttpWebRequest)WebRequest.Create(ticketissuerURL); 

     // Set some reasonable limits on resources used by this request 
     request.MaximumAutomaticRedirections = 4; 
     request.MaximumResponseHeadersLength = 4; 
     request.KeepAlive = true; 
     request.AllowAutoRedirect = false; 
     request.PreAuthenticate = true; 

     // Pass in current credentials 
     request.UserAgent = "Mozilla/4.0 (Windows)"; 

     HttpWebResponse response = (HttpWebResponse)request.GetResponse(); 
+0

響應(除了cookie)是否有效? –

+0

當您更改框架時,您只需更改應用程序池的目標框架,或者您正在爲解決方案本身做些什麼?另外,你介意告訴我們你正在使用哪個服務器? –

+0

要複製該問題,我可以簡單地更改項目框架目標版本並在調試中運行。我正在使用Windows 2008服務器。 – ironpaw

回答

1

我已經檢查了您的代碼爲這個site作爲cookie源。在財產響應框架中設置了適當的Cookie。你可以創建cookie容器,以使它們可見,作爲迴應.Cookies propety。

request.CookieContainer = new CookieContainer(); 

所以看起來這個問題是別人的財產以後,也許代理或實施在.NET 4.0中已經改變了(並將其添加產生額外的頭,這使得它在.NET 4.0的爲您服務)。我認爲檢查真實請求是個好主意。我建議你下載fiddler tool並啓用https解密和來自兩個框架的下一個比較請求。

記得在年初加入這行代碼

WebProxy proxy = new WebProxy("localhost:8888"); 

的讓提琴手檢查您的要求。

+1

使用fiddler到localhost是相當棘手的。即使明確重定向,本地主機通常也不會被攔截。萬無一失的解決方案是使用外部IP地址(在您的LAN上)而不是locahost或127.0.0.1。這迫使流量不使用本地環路網絡接口。 – redcalx

相關問題