• .NET Windows客户端程序在代理环境下的相关设置


    这里是一点经验的简短总结

    之前在用SmartClient+Remoting的方式开发业务管理系统的时候,就遇到过一次HTTP代理配置的问题。当时,由于Remoting无法自动配置代理,所以采取的办法就是在登录界面上提供代理网络配置的选项,让用户手动录入代理服务器的地址,端口,用户名和密码。

    在.NET 4.0中对于Web Service和WCF,就可以通过设置WebRequest.DefaultWebProxy.Credentials = CredentialCache.DefaultNetworkCredentials;来自动配置大部分代理服务器。这种方式其实就是使用IE中对代理服务器的配置。

    对于DefaultNetworkCredentials的使用可以参考我另外一篇博客:DefaultNetworkCredentials vs DefaultCredentials

    通过以上代码配置后,并不能保证一定能正确访问,所以还需要进行如下处理:

    1. 通过代码配置为默认代理后
    2. 访问一下网络是否连通
    3. 如果没有连通,尤其访问407这个验证错误的代码,
    4. 那么就需要提示用户输入代理服务器用户名和密码

    我的实现代码如下:

    custom code for set proxy

    除了通过代码来配置默认代理外,也可以在配置文件中对WCF等进行配置,如下:

    <basicHttpBinding>
    
      <binding name="MyClientBinding" proxyAddress="http://gateway:8080" useDefaultWebProxy="false">
    
      </binding>
    
    </basicHttpBinding>
    
    or
    
    <customBinding>
    
      <binding name="MyCustomClientBinding">
    
        <binaryMessageEncoding />
    
        <httpTransport proxyAddress="http://gateway:8080" useDefaultWebProxy="false" />
    
      </binding>
    
    </customBinding>
    
    or
    
    <system.net>
    
      <defaultProxy useDefaultCredentials="true">
    
        <proxy bypassonlocal="False" proxyaddress="http://gateway:8080" />
    
      </defaultProxy>
    
    </system.net>
    分享到: 更多
  • 相关阅读:
    js去重的es6做法和es5做法
    对npm的认识
    pandas_分类与聚合
    pandas_使用透视表与交叉表查看业绩汇总数据
    pandas_使用属性接口实现高级功能
    pandas_一维数组与常用操作
    pandas_DateFrame的创建
    python 连接 mysql 的三种驱动
    Django学习路6_修改数据库为 mysql ,创建mysql及进行迁徙
    Django学习路5_更新和删除数据库表中元素
  • 原文地址:https://www.cnblogs.com/redmoon/p/2010221.html
Copyright © 2020-2023  润新知