晨鸟科技

标题: asp.net程序使用代理访问网页——自动检测问题解决,求详解 [打印本页]

作者: Star    时间: 2010-12-23 22:53
标题: asp.net程序使用代理访问网页——自动检测问题解决,求详解
本帖最后由 Star 于 2010-12-24 14:43 编辑 5 |. E. C- |) P( f: i; C+ ^3 W; B

# L' E4 _  y" v第一种解决办法是针对使用webclient访问网页的:为WebClient配置proxy属性,下面是网上的一个距离,源地址是http://bbs.firnow.com/dview16t58782.html
  1. WebClient   clt   =   new   WebClient(); + \3 b+ T* \' C" w7 E  r
  2. WebProxy   proxy   =   new   WebProxy( "ProxyServer ",   80);
    8 g$ R( O  J" f! @7 e# M. Y7 y
  3. NetworkCredential   crd   =   new   NetworkCredential( "UserName ",    "Password ",    "Domain ");
    & w7 s' L& g+ q" L7 z8 K4 D
  4. proxy.Credentials   =   crd;
    5 f1 n1 D& S* [$ U, j
  5. clt.Proxy   =   proxy;
复制代码
但是EB_EXP中使用的是HttpWebRequest,这个的解决办法也是为HttpWebRequest配置proxy信息,HttpWebRequest对象也有Proxy属性的
" g6 e5 d- |. p1 H; ]( D3 I/ F/ h3 o1 l3 O! T
可是,应该是程序自动检测用户浏览器是否使用了代理,使用了代理则获取用户浏览器中设置的代理的username和password等信息访问网络(不知道这个是否可行),如果没有使用代理,则直接访问- \+ d3 e, m" v- W: m6 q$ l3 }* {) K
# j) X) B5 |" U" u0 q
功能的关键是:
9 o. ?1 y, O* Y; t( `; m' f1、asp.net使用代理访问网络
  B) ?/ W8 {, y+ ?& Y# I2、代理自动检查与获取
作者: Star    时间: 2010-12-24 14:17
可以如下面的代码示例所示,通过将空 Proxy 用于您的请求,禁用请求级别的自动代理检测
  1. public static void DisableForMyRequest (Uri resource)
      B1 j" w* g! i3 D, a
  2. {! j, |  }( ^% Y' s1 L- F
  3.     WebRequest request = WebRequest.Create (resource);. f; O1 u2 n  ?- m9 q& k
  4.     request.Proxy = null;
    ( m# p$ ?! l, K% n
  5.     WebResponse response = request.GetResponse ();/ a. K$ y8 y, p+ a3 y5 Z
  6. }
复制代码

作者: Star    时间: 2010-12-24 14:22
所以说,代理的检测是.net做的事情咯?
作者: Star    时间: 2010-12-24 14:42
实验:5 e5 v  z, u1 g% Q8 m+ g
在EB_EXP系统中使用“前往”进行测试:1 a9 c6 h7 v5 C- \* [* |7 P2 x
Part1:程序是否能自动检测IE内核的浏览器的代理4 q8 a- Q7 W7 o7 }5 ]  w. Z
1、IE中不启用代理服务,“前往”www.cnn.com,是不可以访问,在校园环境下,则弹出校园网认证窗口Drcom上网登录窗; j" z$ n- [+ \; O$ ^
2、IE中启用代理服务,可以在浏览区显示cnn的网页
; r% n; p& h$ JPart2:IE内核以外的浏览器:使用火狐做实验3 a1 l8 ]! r3 x5 X% T/ _& X
1、火狐中不启用代理不能访问;火狐中启用代理能访问;
- d" }: i  U3 v1 B1 m2、IE中启用代理,火狐中不启用,使用火狐浏览器不能访问:说明不同浏览器访问网络是基于其本身设置的
$ `# V, U6 a. m; B, B* r5 q3 @( `& ^" A
+ l3 U) s# M. E总结:.net开发的系统是能自动检测查找代理的,在程序中不用进行代码设置,如果要禁用代理服务,则在程序中将HttpWebRequest或者WebClient的Proxy属性设置为null+ J+ X# ], F; o" U
1、
作者: Star    时间: 2010-12-24 14:42
好啦,不过还需要了解浏览器访问网络资源的原理,才能解释清楚这个问题呀




欢迎光临 晨鸟科技 (http://www.chenniao.com/cprofessor/) Powered by Discuz! X3.2