如何通过C#中的代理访问Internet

时间:2010-02-01 06:44:08

标签: .net proxy

我正在使用C#设计Windows窗体应用程序。当连接到Internet时,应用程序可以顺利地执行其功能,但是当我们在学院中尝试应用程序时,真正的问题就开始了。

我们的学院使用代理网关连接到网络。代理服务器是192.168.120.5和代理端口8080。每个学生都有一个唯一的用户名和密码。

如何才能领先于这个障碍?我正在尝试创建与目标IP的代理连接:

WebRequest request = WebRequest.Create("http://www.example.com");  
request.Proxy = new WebProxy("192.168.120.5", 8080); 

这会以任何方式帮助我吗?如果是,我在哪里输入用户名和密码凭证?

2 个答案:

答案 0 :(得分:2)

是的,你可以使用它...虽然它可能更简单使用WebRequest.DefaultWebProxy

WebProxy proxyObject = new WebProxy("http://proxyserver:80/",true);
proxyObject.Credientials = new NetworkCredential(UserName, "bla");
WebRequest req = WebRequest.Create("http://www.contoso.com");
req.Proxy = proxyObject;

虽然作为旁注,您可以通过设置

来使用本地默认凭据
proxyObject.UseDefaultCredentials = true;

如果您尝试使用它,则必须确保proxyObject.Credintials = null。
所有这一切的msdn网站都在这里MSDN WebProxy

答案 1 :(得分:0)

这会有点迟,但这可能会帮助处于相同情况的其他人,如下所示,首先为您的代理配置创建一个新类

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Web;

namespace Your_name_space
{
    public class Proxy : IWebProxy
    {
        public ICredentials Credentials
        {
            get
            {
                return new NetworkCredential("username", "password", "domaine");
            }
            set { }
        }

        public Uri GetProxy(Uri destination)
        {
            return new Uri("your_proxy_address:port");
        }

        public bool IsBypassed(Uri host)
        {
            return false;
        }
    }
}

接下来,将其作为模块添加到您的应用程序配置中的configuration / system.net部分下。

  <system.net>
    <defaultProxy enabled="true" useDefaultCredentials="false" >
      <module type="Your_name_space.Proxy , your_assembly_name" />
    </defaultProxy>
  </system.net>

如果您确实要使用默认会话凭据,请在代理类中替换 这个:

new NetworkCredential("username", "password", "domaine");

作者

CredentialCache.DefaultCredentials;

我希望这会有所帮助。