hugh20
Alvin_Hugh
2014-12-30 15:31
浏览 3.9k

GetResponse时,出现异常:以一种访问权限不允许的方式 做了一个访问套接字的尝试。

公司使用了代理,要访问外部网站,必须要通过代理访问。
代码如下:
// 设置一些公用的请求头

NameValueCollection collection = new NameValueCollection();
collection.Add("Accept-Encoding", "gzip,deflate,sdch");
collection.Add("Accept-Language", "zh-CN,zh;q=0.8");

            req = (HttpWebRequest)WebRequest.Create(url);
            req.KeepAlive = true;
            req.Method = method.ToUpper();
            req.AllowAutoRedirect = true;
            req.CookieContainer = Cookies;
            req.ContentType = ContentType;
            req.UserAgent = UserAgent;
            req.Accept = AcceptType;
            req.Timeout = TimeOut;
            req.Referer = refer;
            req.Headers.Add(collection);
            WebProxy wp = new WebProxy("openproxy.com:8080",true);
            wp.Credentials = new NetworkCredential("username","pwd","area");
            req.Proxy = wp;

操作的结果是:
会报异常,提示:
System.Net.WebException:无法连接到远程服务器---->
System.Net.Sockets.SocketException:以一种访问权限不允许的方式做了一个访问套接字的尝试。192.16.133.23:8080
在System.Net.Socket.DoConnect(EndPoint endPointSnapshot, SocketAddress socketAddress)。。。

我做了以下尝试:
1、把访问了代理的端口改成80,如果使用默认的代理,提示要验证信息;如果使用代码中的代理,获得的是代理服务器的访问错误页面提示。(这是正确结果)。
2、telnet了代理服务器的8080端口,成功。
由上面两个尝试可以知道,我的代理的验证信息是对的,本地的端口也没有冲突,同时代理服务器的8080端口也是开放的。
但是就是不知道为什么,把80端口改成8080端口,就会报异常,百思不得其解。

从网上搜到的信息中看,可能的原因是端口冲突和没有应用程序权限不够。端口冲突是不可能的,应该本地访问的端口不是固定的;也用管理打开过,还是这个问题。

我想跟踪一下汇编代码, 但是进入到Response里面,调用了一个call就返回了,进不去。

不知道哪个大神知道是什么情况,或者是有没有什么定位手段或处理思路。

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

相关推荐