2014-03-24 17 views
0

當你設置HttpWebRequest.Proxy = null時,我發現了HttpWebRequest類的瘋狂行爲。第一次由於某種原因使Expect100Continue重新變爲true。例如該代碼HttpWebRequest.Proxy = null重寫Expect100Continue

 HttpWebRequest webRequest1 = (HttpWebRequest)WebRequest.Create("http://stackoverflow.com/"); 
     webRequest1.Method = "POST"; 

     webRequest1.ServicePoint.Expect100Continue = false; 
     webRequest1.Proxy = GlobalProxySelection.GetEmptyWebProxy(); ; 
     Console.WriteLine(webRequest1.ServicePoint.Expect100Continue); 

     webRequest1.ServicePoint.Expect100Continue = false; 
     webRequest1.Proxy = null; 
     Console.WriteLine(webRequest1.ServicePoint.Expect100Continue); 


     webRequest1 = (HttpWebRequest)WebRequest.Create("http://stackoverflow.com/"); 
     webRequest1.Method = "POST"; 

     webRequest1.ServicePoint.Expect100Continue = false; 
     webRequest1.Proxy = null; 
     Console.WriteLine(webRequest1.ServicePoint.Expect100Continue); 


     HttpWebRequest webRequest2 = (HttpWebRequest)WebRequest.Create("http://stackoverflow.com/"); 
     webRequest2.Method = "POST"; 

     webRequest2.ServicePoint.Expect100Continue = false; 
     webRequest2.Proxy = null; 
     Console.WriteLine(webRequest2.ServicePoint.Expect100Continue); 

     Console.ReadLine(); 

會寫: 真 假 假 假

而且只有一個辦法,我發現到解決此問題:

 var Expect100Continue = webRequest.ServicePoint.Expect100Continue; 
     webRequest.Proxy = null; 
     webRequest.ServicePoint.Expect100Continue = Expect100Continue; 

誰能解釋一下嗎?

回答

1

當在WebRequest上設置Proxy屬性時,將重新創建ServicePoint

Expect100Continue的值將默認設置爲ServicePointManager上的值,可以從app.config文件進行配置。

至少,這是我從看反彙編時可以看到的。