WCF客户端C#代码 配置config文件

不多说了,直接上代码吧。。。。

服务端Web.config文件中bindings配置

   <bindings>
      <wsHttpBinding>
        <binding name="httpconf" closeTimeout="10:10:10"
          openTimeout="10:10:10" receiveTimeout="10:10:10" sendTimeout="10:10:10"
          allowCookies="true" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
           maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647" >
          <reliableSession ordered="true" inactivityTimeout="00:20:00"
            enabled="false" />
          <security mode="Message">
            <transport clientCredentialType="Windows" proxyCredentialType="None"
             realm="" />
            <message clientCredentialType="Windows" negotiateServiceCredential="true"
              algorithmSuite="Default" />
          </security>
        </binding>
      </wsHttpBinding>
 </bindings>

服务端Web.config文件中behavior配置

<behavior name="Card_WcfService.WCF.CardInfoServiceBehavior">
          <dataContractSerializer maxItemsInObjectGraph="2147483647" />
          <serviceMetadata httpGetEnabled="true" />
          <serviceTimeouts transactionTimeout="00:10:00" />
          <serviceDebug includeExceptionDetailInFaults="false" />
          <serviceThrottling maxConcurrentCalls="2147483647" maxConcurrentInstances="2147483647" maxConcurrentSessions="2147483647" />
 </behavior>

服务端Web.config文件中service配置

 <service behaviorConfiguration="Card_WcfService.WCF.CardInfoServiceBehavior"
        name="Card_WcfService.WCF.CardInfoService">
        <endpoint address="" binding="wsHttpBinding" contract="Card_SystemAPI.ICardInfoService"  bindingConfiguration="httpconf">
          <identity>
            <dns value="localhost" />
          </identity>
        </endpoint>
      </service>

下面才是我想要的东西,弄这个花了我半天时间
客户端代码注册配置文件

 public class ClientFactory<TClient> : IDisposable
    {
        static EndpointAddress serviceAddress;
        static WSHttpBinding binding;
        ChannelFactory<TClient> factory;
        TClient proxy;
        OperationContextScope scope;
        public TClient CreateClient()
        {
            factory = new ChannelFactory<TClient>(binding, serviceAddress);
            foreach (OperationDescription op in factory.Endpoint.Contract.Operations)
            {

                DataContractSerializerOperationBehavior dataContractBehavior = op.Behaviors.Find<DataContractSerializerOperationBehavior>()
                    as DataContractSerializerOperationBehavior;

                if (dataContractBehavior != null)
                {

                    dataContractBehavior.MaxItemsInObjectGraph = 2147483647;

                }

            }
            proxy = factory.CreateChannel();
            ((IClientChannel)proxy).Faulted += new EventHandler(a_Faulted);
            scope = new OperationContextScope(((IClientChannel)proxy));
            var curId = CacheStrategy.CurUser == null ?Guid.Empty : CacheStrategy.CurUser.AutoID;
            MessageHeader<Guid> mhg = new MessageHeader<Guid>(curId);
            MessageHeader untyped = mhg.GetUntypedHeader("token", "ns");
            OperationContext.Current.OutgoingMessageHeaders.Add(untyped);
            return proxy;
        }
        void a_Faulted(object sender, EventArgs e)
        {
            //todo:此处得不到异常的内容
        }
        public void Dispose()
        {
            try
            {
                scope.Dispose();
                ((IClientChannel)proxy).Close();
                factory.Close();
            }
            catch
            {
            }
        }
        static ClientFactory()
        {
            var surl = ConfigurationManager.AppSettings["ServiceURL"];
            var iname = typeof(TClient).FullName.Substring("Card_SystemAPI.I".Length);
            var sname = string.Format("{0}.svc", iname);
            var url = Path.Combine(surl, sname);
            serviceAddress = new EndpointAddress(url);
            binding = new WSHttpBinding();
            binding.CloseTimeout = new TimeSpan(10, 10, 10);
            binding.OpenTimeout = new TimeSpan(10, 10, 10);
            binding.SendTimeout = new TimeSpan(10, 10, 10);
            binding.ReceiveTimeout = new TimeSpan(10, 10, 10);
            binding.MaxReceivedMessageSize = 2147483647;
            binding.MaxBufferPoolSize = 2147483647;
            binding.AllowCookies = true;
        }
    }

QQ群号: 242251580  身份认证:.NET技术讨论

如有转载,请保留原有地址:http://www.cnblogs.com/hank-hu/p/4663568.html

时间: 2024-10-07 00:24:07

WCF客户端C#代码 配置config文件的相关文章

PHP 后台程序配置config文件,及form表单上传文件

一,配置config文件 1获取config.php文件数组, 2获取form 表单提交的值 3保存更新config.php文件,代码如下: 1 $color=$_POST['color']; 2 $backtype=$_POST['backtype']; 3 4 $settings=include(dirname(__DIR__).'/config.php'); 5 6 $settings['themescolor']=(int)$color; 7 $settings['themesbackg

读取配置config文件

1 <system.net> 2 <mailSettings> 3 <smtp from="[email protected]"> 4 <network /> 5 </smtp> 6 </mailSettings> 7 </system.net> 读取上面↑的xml代码{ 1 mtpSection section = ConfigurationManager.GetSection("syste

【IIS】IIS6.1配置 *.config 文件 的MIME类型用于升级程序

参考:http://blog.csdn.net 1. 2. 请求筛选中允许config文件下载, 3. 添加.config到 MIME类型. 3.注意:筛选项.

WCF客户端关闭代码

? Close不一定会成功,所以需要Abort. ChannelFactory channel = new ChannelFactory<IService1>("bindingName"); IService1 client = channel.CreateChannel(); try { ????client.Say("Hello, world!"); ????client.Close(); } catch (CommunicationExceptio

WCF客户端配置以及代理-----基于DDD领域驱动设计的WCF+EF+WPF分层框架(4)

写在最前面:转载请注明出处 目录置顶: 关于项目--------------------基于DDD领域驱动设计的WCF+EF+WPF分层框架(1) 架构搭建--------------------基于DDD领域驱动设计的WCF+EF+WPF分层框架(2) WCF服务端具体实现---------基于DDD领域驱动设计的WCF+EF+WPF分层框架(3) WCF客户端配置以及代理-----基于DDD领域驱动设计的WCF+EF+WPF分层框架(4) Domain具体实现------------基于DD

Web.Config文件配置之限制上传文件大小和时间

在邮件发送系统或者其他一些传送文件的网站中,用户传送文件的大小是有限制的,因为这样不但可以节省服务器的空间,还可以提高传送文件的速度.下面介绍如何在Web.Config文件中配置限制上传文件大小与时间. 在Web.Config文件中配置限制上传文件大小与时间字符串时,是在<httpRuntime><httpRuntime/>节中完成的,需要设置以下2个属性: maxRequestLength属性:用于防止服务器攻击,例如因用户向服务器发送大型文件而导致的拒绝访问.默认值为4096(

Web.Config文件配置

1.配置Access数据库连接 Provider属性用于指定使用的数据库引擎,Data Source属性用于指定Access数据库文件位于计算机中的物理位置.ASP.NET 应用程序将 |DataDirectory| 解析为“<应用程序根目录>/app_data”文件夹. <configuration> <appSettings>  <add key="accessCon" value="Provider=Microsoft.Jet.

Unity中Web.Config文件的配置与调用

在上一篇文章“Unit简单依赖注入”我们可以实现构造对象和被依赖对象之间的 松耦合,使我们的抽象层(Player)能够保持稳定,但是在并没有把客户类和Player类之间彻底解耦,即当我们不想使用MP3Player注入,而 想使用CDPlayer注入时,我们需要修改客户类的容器注册.下面我们使用web.config配置文件来解决这个问题.Unity 应用程序块可以从 XML 配置文件中读取配置信息.配置文件可以是 Windows Forms 应用程序的 App.config 或者 ASP.NET

解析config文件 练手代码

解析一个如下的CONFIG文件 #config.txt #SHTTPD Web 服务器配置文件示例 #侦听端口 ListenPort = 80 #最大并发访问客户端数目 MaxClient = 8 #Web网页根目录 DocumentRoot = /home/www/ #CGI根目录 CGIRoot = /home/www/cgi-bin/ #默认访问文件名 DefaultFile = index.html #客户端空闲链接超时时间 TimeOut = 5 代码 #include <fstrea