c# winform+wcf代理上网的处理

程序是.net开发的winform工具,分服务器端和客户端,用wcf技术实现数据交互。

客户端是大型公司,内部统一使用代理服务器上网。具体描述为:在IE中设置lan代理服务器才能查询网络数据;登录QQ或其他联网程序(网络版金山词霸)时,需要打开程序的代理设置,填写相应的地址和端口,才能登录。

自行开发的.net程序这类问题怎么解决。

参考这里:http://bbs.csdn.net/topics/390395103

HomeLinkTransClient client = new HomeLinkTransClient(binding, epAddress);
client.ClientCredentials.UserName.UserName = "用户名"; 
client.ClientCredentials.UserName.Password = "密码"; 

此客户端代理是别人访问设置的用户名和密码

 

web.config配置才是网络代理
 <system.net>
    <defaultProxy useDefaultCredentials="true"></defaultProxy>    
  </system.net>
以上web.config设置会默认的从浏览器中找到代理。

 

实际应用只在服务器端的web.config里面设置了下面的代码即可解决问题。

至于上面的client的设置,暂不清楚用处。

 

 

补充一:上面的方法并未解决实际用户的问题。

wcf的客户端代理为System.ServiceModel.ClientBase<IWcfService>类型的对象,每次链接wcf都是实例化此对象,然后发送请求。

本次的解决方法:

public class WcfClient
{
    static readonly System.ServiceModel.BasicHttpBinding _Binding;

    /// <summary>
    /// 默认wcf服务连接
    /// </summary>
    public const string UriString = @"http://www.123.cn/wcf.svc";

    static WcfClient()
    {
        _Binding = new BasicHttpBinding();
        _Binding.ReaderQuotas = new System.Xml.XmlDictionaryReaderQuotas() { MaxStringContentLength = 65536 }; //(更改这个数字) 
        //在这里设置代理
        WebProxy proxy = new WebProxy("192.168.0.200:8765", false);
        proxy.Credentials = new NetworkCredential("User", "psd");
        System.Net.HttpWebRequest.DefaultWebProxy = proxy;
    }

    /// <summary>
    /// 获取wcf服务
    /// </summary>
    /// <param name="uri">wcf服务连接</param>
    /// <returns></returns>
    public static WcfServiceClient GetService(string uri = UriString)
    {
        var sc = new WcfServiceClient();
        sc.Endpoint.Address = new EndpointAddress(new Uri(uri));
        sc.Endpoint.Binding = _Binding;
        return sc;
    }
}

在上面的静态构造函数里面配置代理的属性,赋值给System.Net的默认代理设置即可。

遗留问题:通常代理的设置都有http/sockS5/sockS4/浏览器设置等,这里的代理设置应该是对http的代理设置,这几种代理设置是针对代理服务器的还是wcf数据传输方式?感觉应该是代理服务器的,如果是这样,那其他几种代理方式的程序设置应该怎么完成呢?

没看懂的资料:http://bbs.csdn.net/topics/110181980

 

补充二:

http://code.logos.com/blog/2010/01/using_http_proxy_servers.html

posted @ 2014-07-30 13:45  脸谱匠  阅读(4224)  评论(0编辑  收藏  举报