日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

关于.Net WebProxy【转】

發布時間:2023/12/14 asp.net 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 关于.Net WebProxy【转】 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

因為涉及到代理的各種情況,WebRequest和WebProxy類的文檔寫的相當復雜,不但各個文檔關注點不同,而且不同版本的同一文檔也有小小的區 別,網上也沒有關于這個類的相關文章。于是乎這篇Blog是我鉆研半天MSDN很久后總結并且花了一小時憋出來的,希望下面的內容能幫到大家。
(AcDown中也使用了相關的代碼,有興趣的可以找來看看)

直接進入正題,對于需要使用WebProxy類的情況,大致分如下幾種:
1、創建WebRequest的時候,沒有刻意設置代理(默認情況)
2、使用Internet Explorer代理
3、使用應用程序配置文件中的代理
4、不使用代理
5、使用.NET框架默認設置的代理
6、使用WPAD配置腳本自動設置的代理
7、使用IE+應用程序配置文件的混合代理
8、使用IE代理但禁用自動代理檢測(WPAD)

怎么樣,很混亂吧。當然上面這些很多都是重復的,不過基本已經涵蓋了所有可能遇到的情況,下面讓我來一個一個說說:

1、默認情況下的代理設置
當創建一個新的HTTP請求時(WebRequest.Create方法),得到的HttpWebRequest類會自動初始化它的Proxy屬性,那么這個屬性的默認值是什么呢?MSDN中說:

?如果配置文件中未指定代理并且未指定?Proxy?屬性,則?HttpWebRequest?類使用從本地計算機上的 Internet Explorer 中繼承的代理設置。?如果 Internet Explorer 中沒有代理設置,請求會直接發送到服務器。?

這段話中,說到Proxy屬性使用的其實就是默認代理,這個默認代理默認來自于IE,如果IE沒有設置代理,那么就會直接連接到目標服務器。為什么要說“默認代理默認來自于IE”呢?因為這個“默認來自于IE”也是可以修改的,通過修改WebProxy.DefaultWebProxy屬性,你可以控制每次新建請求時所使用的默認代理:

DefaultWebProxy?屬性從 app.config 文件中讀取代理服務器設置。?如果沒有配置文件,則使用當前用戶的 Internet Explorer (IE) 代理設置。

如果?DefaultWebProxy?屬性設置為 null,則使用?Create?或?CreateDefault?方法創建的?WebRequest?類的所有后續實例都沒有代理。

這里需要注意的是,如果DefaultWebProxy設置為null,并不意味著WebRequest的Proxy屬性也是null,這兩個null表示的意義不同。


2、使用IE代理,但不使用任何動態設置
最簡單的方法是將Proxy屬性設置為WebProxy.GetDefaultProxy,GetDefaultProxy會讀取當前計算機上的IE代理設置,同時忽略掉所有動態設置的內容:

GetDefaultProxy?方法讀取 Internet Explorer 5.5 和更高版本存儲的非動態代理設置并使用這些設置創建?WebProxy?實例。

GetDefaultProxy?方法不獲取從 Internet Explorer 運行的腳本、從自動配置項或者從 DHCP 或 DNS 查找生成的任何動態設置。

但是這個API已經過時,所以現在我推薦的方法是:將Proxy屬性設置為null:
http://msdn.microsoft.com/zh-cn/library/fze2ytx2(v=vs.80).aspx


3、使用IE代理,同時使用各種動態配置項
這個是比較簡單的了,當然這種情況還是會包含兩種小的情況:
(1)使用app.config中的配置:將Proxy屬性設置為 WebProxy.DefaultWebProxy?


(2)不使用app.config中的配置:將Proxy屬性設置為?WebRequest.GetSystemWebProxy()
GetSystemWebProxy?方法讀取當前用戶的 Internet Explorer (IE) 代理設置。?此進程包括 IE 選項來自動檢測代理設置,請使用自動配置腳本、手動代理服務器設置和高級手動代理服務器設置。?


4、不使用任何代理
不使用任何代理的方法是:創建一個WebProxy類的新實例:

默認構造函數通過將?Address?屬性設置為?null?來初始化?WebProxy?類的空實例。

Address?屬性為?null?時,IsBypassed?方法返回?true,且?GetProxy?方法返回目標地址。

另外再來看看Address屬性的說明:

Address?屬性包含代理服務器的地址。?如果未啟用自動代理檢測并且未指定自動配置腳本,則?Address?屬性與?BypassList?共同確定用于請求的代理。

當?Address?屬性為?null?時,請求回避此代理并且直接連接到目標主機。

綜上所述,也就是說,當使用無參構造函數創建一個新的WebProxy對象時(req.Proxy = new WebProxy();),這個請求會繞過所有代理服務器直接連接目標服務器。


5、其他
關于如何設置app.config/machine.config配置文件中的代理設置:
<defaultProxy>元素:http://msdn.microsoft.com/zh-cn/library/kd3cf2ex
<proxy>元素:http://msdn.microsoft.com/zh-cn/library/sa91de1e(v=vs.100).aspx


Over~

轉載于:https://www.cnblogs.com/ahua1188/p/4838419.html

總結

以上是生活随笔為你收集整理的关于.Net WebProxy【转】的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。