zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    基数排序
    计数排序和桶排序
    部署Java Web项目到云服务器的步骤全解析
    IP地址0.0.0.0/0是什么意思
    Tomcat在阿里云Centos7上正常启动,但浏览器无法访问的解决方法
    eclipse光标怎么返回上一次浏览的位置
    IDEA设置方法自动显示参数提示
    socket通信模型、socket中的accept()阻塞与read()阻塞
    Ubuntu18.04 下修改 root密码
    Ubuntu18.04 安装 VMwareTools
  • 原文地址:https://www.cnblogs.com/icyJ/p/DefaultProxy.html
Copyright © 2011-2022 走看看