首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何确保WCF ChannelFactory在xml配置中使用绑定设置(忽略MaxArrayLength)

在WCF中,ChannelFactory是用于创建客户端通道的类。要确保ChannelFactory在XML配置中使用绑定设置(忽略MaxArrayLength),可以按照以下步骤操作:

  1. 创建一个自定义绑定,并设置所需的绑定设置。
  2. 在配置文件中指定自定义绑定。
  3. 在代码中使用ChannelFactory创建客户端通道,并指定配置文件中的自定义绑定。

以下是一个示例:

  1. 创建一个自定义绑定:
代码语言:csharp
复制
using System.ServiceModel;
using System.ServiceModel.Channels;

public class CustomBinding : Binding
{
    public CustomBinding()
    {
        this.MaxArrayLength = int.MaxValue;
    }

    public override string Scheme
    {
        get { return "http"; }
    }

    public override BindingElementCollection CreateBindingElements()
    {
        var bindingElements = new BindingElementCollection();
        bindingElements.Add(new TextMessageEncodingBindingElement());
        bindingElements.Add(new HttpTransportBindingElement());
        return bindingElements;
    }
}
  1. 在配置文件中指定自定义绑定:
代码语言:xml<configuration>
复制
 <system.serviceModel>
    <bindings>
     <customBinding>
       <binding name="MyCustomBinding">
          <textMessageEncoding />
          <httpTransport />
        </binding>
      </customBinding>
    </bindings>
  </system.serviceModel>
</configuration>
  1. 在代码中使用ChannelFactory创建客户端通道,并指定配置文件中的自定义绑定:
代码语言:csharp
复制
using System.ServiceModel;

var endpointAddress = new EndpointAddress("http://localhost:8080/MyService");
var binding = new CustomBinding();
var channelFactory = new ChannelFactory<IMyService>(binding, endpointAddress);
var myServiceClient = channelFactory.CreateChannel();

在这个示例中,我们创建了一个名为“MyCustomBinding”的自定义绑定,并在配置文件中指定了该绑定。然后,我们在代码中使用ChannelFactory创建了一个客户端通道,并指定了该绑定。这样,我们就可以确保ChannelFactory在XML配置中使用绑定设置(忽略MaxArrayLength)。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

使命必达: 深入剖析WCF的可靠会话(内含美女图片,定力差者慎入)

接下来我们将要演示的实例是对可靠会话确保WCF消息传输的可靠性的一个直观的反应,也是早年微软推广WCF技术频繁使用的案例:图片传输。...但是,虽然我们不能让消息在网络传输层丢失,但是我们可以让它在WCF的信道层丢失。如何实现这样的目的呢,相应阅读过《WCF技术剖析(卷1)》第3章的读者会很快想到可以采用自定义信道的方式。...由于WCF技术剖析(卷1)》我们有过对如何自定义信道的专门介绍,在这里我们就不在多做重复的讲述了。...我们照例先来看看WCF客户端的配置: <?xml version="1.0" encoding="utf-8" ?...,客户端也配置了三种自定义绑定

1.2K100

WCF随客户端软件一起发布,客户端自动识别WCF服务地址,不通过配置文件绑定WCF服务,客户端动态获取版本号

WCF发布到IIS,并有相应的SVC宿主文件 客户端软件通过CLICK ONCE发布到WCF的相同目录下 本例实现了:客户端自动发现WCF服务的功能 1 不通过配置文件绑定WCF服务 ICallCenter...binding.ReaderQuotas.MaxDepth = 3200; binding.ReaderQuotas.MaxStringContentLength = 819200; binding.ReaderQuotas.MaxArrayLength...binding.ReaderQuotas.MaxBytesPerRead = 409600; binding.ReaderQuotas.MaxNameTableCharCount = 16384; ChannelFactory...channelFactory = new ChannelFactory(binding, address); proxy = channelFactory.CreateChannel(); 上述代码...AppDeploymentUtils.GetWcfUri()是获取WCF地址的方法 代码详细如下 2 动态获取WCF地址 /// /// 获取WCF

58910
  • WCF传输1-你是否使用过压缩或Json序列化?

    1.1 Code的实现: (1)Server端和Client的配置 ...using (ChannelFactory channelFactory = new ChannelFactory<IGetPersonDetailService...这里有个问题,为什么Json格式的数据比原WCF基于XML传输的数据小??? 原因是WCF的传输的数据是将对象序列化为xml格式,需要用很多标签来记录各个字段的内容。...文章: WCF安全1-开篇 WCF安全2-非对称加密 WCF安全3-Transport与Message安全模式 WCF传输1-你是否使用过压缩或Json序列化?...版权声明:本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且文章页面明显位置给出原文链接。 特此声明:所有评论和私信都会在第一时间回复。

    1.2K100

    WCF传输1-你是否使用过压缩或Json序列化?

    问题1解答:通过压缩来传输数据 问题2解答:             (1)WCF自带的压缩方式             (2)自定义WCF binding进行压缩             (3)将对象序列化为...1.1 Code的实现: (1)Server端和Client的配置 ...using (ChannelFactory channelFactory = new ChannelFactory<IGetPersonDetailService...这里有个问题,为什么Json格式的数据比原WCF基于XML传输的数据小??? 原因是WCF的传输的数据是将对象序列化为xml格式,需要用很多标签来记录各个字段的内容。...版权声明:本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且文章页面明显位置给出原文链接。 特此声明:所有评论和私信都会在第一时间回复。

    65540

    WCF技术剖析(卷1)》(修订版)目录

    客户端指定地址 2.4.3. 地址报头 2.3. 端口共享 2.3.1. 端口共享WCF的意义何在? 2.3.2. 基于HTTP|HTTPS的端口共享 2.3.3....消息分发 第3章 绑定 (Binding) 3.1. 绑定模型 3.1.1. 信道与信道栈 3.1.2. 实例演示:如何直接通过绑定进行消息通信(S301) 3.1.3....实例演示:创建自定义绑定(S302,S303) 3.6.3. 系统绑定 3.6.4. 自定义绑定 3.6.5. 绑定配置 第4章 契约 (Contracts) 4.1....序列化WCF框架的实现 5.7.1. 消息格式化器 5.7.2. DataContractSerializer还是XmlSerializer? 5.7.3....实例演示:如何使用自定义ServiceHost(S704) 7.4.3. ASP.NET并行模式 7.4.4. ASP.NET兼容模式 7.4.5. 非HTTP协议寄宿 7.5.

    1.1K80

    WCF技术剖析之九:服务代理不能得到及时关闭会有什么后果?

    我们想对WCF具有一定了解的人都会知道:客户端通过服务调用进行服务调用过程,服务代理应该及时关闭。但是如果服务的代理不等得到及时的关闭,到底具有怎样的后果?什么要关闭服务代理?...数据报信道(Datagram Channel) WCF通过信道栈实现了消息的编码、传输及基于某些特殊功能对消息的特殊处理,而绑定对象是信道栈的缔造者,不同的绑定类型创建出来的信道栈具有不同的特性。...本例使用我们熟悉的计算服务例子,服务寄宿的时候采用WsHttpBinding,下面是客户端程序。...答案是肯定的,服务允许的最大并发会话可以通过ServiceThrottlingBehavior服务行为的MaxConcurrentSessions属性进行配置。在下面的配置,将该值设为了20。...对服务的并发会话的限制给WCF客户端提出了一个要求,那就是服务代理不再使用的情况下,应该及时将其关闭。

    52620

    我的WCF之旅(1):创建一个简单的WCF程序

    在这种情况下,可以直接使用VS提供的配置工具。...图5 如何获得WCF服务配置编辑器 步骤五:创建客户端调用服务 服务被成功寄宿后,服务端便开始了服务调用请求的监听工作。...在上面的代码创建ChannelFactory的时候再在构造函数中指定终结点的相关要素(契约通过范型类型表示,地址和绑定则通过参数指定)。...真正的WCF应用,大都采用配置的方式进行终结点的定义。我们可以通过下面的配置指定终结点的三要素,并为相应的终结点指定一个终结点配置名称(calculatorservice)。 1: 的时候,就无须再指定终结点的绑定和地址了,而只须制定对应的终结点配置名称。

    66021

    实例演示:TLSSSLWCF的应用

    作为服务凭证的证书通过服务行为ServiceCredentials来指定,对于WCF的安全体系来说,ServiceCredentials是个非常重要的对象,本章后续文章我们将反复地使用到它。...二、创建基于TLS/SSL的WCF服务 ? 接下来我们会通过一个简单的例子来演示如何WCF服务中使用基于TLS/SSL的Transport安全。...NetTcpBinding作为绑定Hosting项目中定义如下的配置。...从配置我们可以看到:寄宿的CalculatorService服务唯一的终结点使用了Transport模式的NetTcpBinding绑定。该绑定的客户端凭证类型为None,意味着接受匿名客户端。...本章后续的内容,我们还将不断的使用到它们。现在我们先看讨论一下如何通过ClientCredentials来改变客户端对服务证书的认证模式。

    1.5K80

    我的WCF之旅(1):创建一个简单的WCF程序

    在这种情况下,可以直接使用VS提供的配置工具。...图5 如何获得WCF服务配置编辑器 步骤五:创建客户端调用服务 服务被成功寄宿后,服务端便开始了服务调用请求的监听工作。...在上面的代码创建ChannelFactory的时候再在构造函数中指定终结点的相关要素(契约通过范型类型表示,地址和绑定则通过参数指定)。...真正的WCF应用,大都采用配置的方式进行终结点的定义。我们可以通过下面的配置指定终结点的三要素,并为相应的终结点指定一个终结点配置名称(calculatorservice)。 1: 的时候,就无须再指定终结点的绑定和地址了,而只须制定对应的终结点配置名称。

    89790

    WCF技术剖析之八:ClientBaseChannelFactory的缓存机制

    为了提高服务调用的性能,.NET 3.5WCFClientBase引入了ChannelFactory的缓存机制。...这得益于.NET 3.5新加入的ChannelFactory的缓存机制。那么,WCF客户端框架内部对ChannelFactory的缓存是如何实现的呢?...ClientBase对象,应该尽可能使用配置绑定信息; 避免ClientBase开启之前读取ChannelFactory、Endpoint和ClientCredential三个属性,...)的WCF服务 WCF技术剖析之六:为什么基于ASP.NET应用寄宿(Hosting)下配置的BaseAddress无效 WCF技术剖析之七:如何实现WCF与EnterLib PIAB、Unity之间的集成...WCF技术剖析之十:调用WCF服务的客户端应该如何进行异常处理 WCF技术剖析之十一:异步操作WCF的应用(上篇) WCF技术剖析之十一:异步操作WCF的应用(下篇) WCF技术剖析之十二:数据契约

    946110

    WCF后续之旅(17):通过tcpTracer进行消息的路由

    另一方面,从目的端口发送给原端口的消息,也同样被tcpTracer截获、显示和转发。 接下来我们我们通过下面的步骤演示如何通过tcpTracerWCF中进行消息的路由。...步骤一、创建一个简单的WCF应用 为了演示tcpTracerWCF的应用,我们需要先创建一个简单的WCF服务的应用,为此我们创建一个简单计算服务的例子。...,所以在这里我使用了自定义绑定,并且添加两个BindElement:HttpTransport和TextMessageEncoding。...为此,我们需要修改服务寄宿的配置终结点配置节中指定listenUri为http://127.0.0.1:8888/calculateservice。 1: <?...当我们先后启动服务寄宿和服务访问的控制台应用程序,tcpTracer,我们可以得到和步骤二一样的结果。

    69690

    WCF技术剖析》博文系列汇总

    问题是这样的,他说他采用ASP.NET应用程序的方式对定义的WCF服务进行寄宿(Hosting),并使用配置的方式对服务的BaseAddress进行了设置,但是创建ServiceHost的时候却抛出...为了提高服务调用的性能,.NET 3.5WCFClientBase引入了ChannelFactory的缓存机制。 [第9篇] 服务代理不能得到及时关闭会有什么后果?...[第11篇] 异步操作WCF的应用[上篇][下篇] 按照操作执行所需的资源类型,我们可以将操作分为CPU绑定型(CPU Bound)操作和I/O绑定型(I/O Bound)操作。...对于I/O绑定型操作,我们可以充分利用多线程的机制,让多个操作自己的线程并发执行,从而提高系统性能和响应能力。服务调用就是典型的I/O绑定型操作,所以多线程服务调用具有广泛的应用。...在这方面,XML无疑是最好的选择。所以WCF下的序列化(Serialization)解决的就是如何将数据从对象的表现形式转变成XML表现形式,以确保数据的正常交换。

    1.4K100

    WCF客户端运行时架构体系详解

    此外,几乎所有的WS-*规范WCF的实现都是通过自定义信道来控制消息交换来完成的,所以这也要求客户端和服务端必须具有对等的信道设置; 契约(Contract):契约最终决定了基于某个操作的服务调用应该采用的消息交换模式...你可以通过编程的方式(构造函数)指定终结点的三要素,也可以将此三要素定义配置文件,通过终结点配置名称(构造函数的endpointConfigurationName参数)来创建ChannelFactory...ServiceEndpointChannelFactory的结构分布如下图所示。 ?...下图揭示了WCF客户端框架体系的大体结构。该架构体系,表示客户端运行时的ClientRuntime是其核心。...而真正被使用的ClientMessageFormatter定义ClientOpoeration的Formatter属性

    1.3K110

    WCF 4.0一个鲜为人知的改变

    本篇文章介绍可以算是WCF 4.0基于限流(Throttling)的新特性,是修订《WCF技术剖析(卷1)》的时候编写演示实例的时候发现的。...一、流量限制简介 WCF是一个基于多线程的消息监听、接收和处理框架体系,能够同时应付来自相同或者不同客户端的服务调用请求,并提供完善的同步机制确保状态的一致性。...所以,我们需要在WCF的消息接收系统和消息处理系统之间设置一道道屏障,将流入消息处理系统的请求控制到一个最佳的范围,以实现对现有资源的有效利用,从而达到确保服务的可用性和提高整体吞吐量的目的。...WCF的流向限制(Throttling)为你设置了这些屏障,你可以根据现有的软硬件环境对该闸门准入的并发流量进行动态的配置。...6: 出现异常:请求通道等待 00:00:59.9844000 以后答复时超时。增加传递给请求调用的超时值,或者增加绑定上的 SendTimeout 值。

    84690

    服务凭证(Service Credential)与服务身份(Service Identity)

    但是默认情况下,这种认证仅仅是确保服务证书的合法性(通过数字签名确保证书确实是由申明的CA颁发)和可信任性(证书或者CA证书存储于相应的可信赖存储区)。...因此,只有基于域(Domain)的网络环境,基于Windows认证的服务认证才是可行的。而在工作组(Work Group)环境,我们推荐使用基于证书的服务认证。...关于具体对服务证书认证模式的设置在前面的实例演示(《TLS/SSLWCF的应用[SSL over TCP]》和《TLS/SSLWCF的应用[HTTPS]》)已经有过介绍了。...SvcUtil.exe导入元数据生成客户端代码和配置的时候,WSDL的服务身份标识会自动被写入配置。...上述六种不同形式的EndpointIdentity配置的表示如下面的XML片断所示。

    1.2K80

    WCF后续之旅(13): 创建一个简单的WCF SOAP Message拦截、转发工具

    实际上很多情况下,两者之间还存在很多的中间结点(Intermediary),这些中间结点在可能在实际的应用中发挥重要的作用。...介绍message interceptor的创建过程,我会穿插介绍一个WCF的其它相关知识,比如Message Filtering、Operation Selection、Must Understand...这个工具本质是一个WCF service(我们姑且称它为Intercept service),该service定义一个operation进行消息的拦截、处理、转发的功能(如下图所示)。...好在我们可以ServiceBehavior设置AddressFilterMode 来改变Address Filtering的方式。...基本的原理如下图所示: 我们现在只需要改变client端的配置即可: 1: <?xml version="1.0" encoding="utf-8" ?

    58530

    检测WCF服务是否在线(动态执行WCF服务)

    我们的系统里有多个wcf支撑。但是有的时候会莫名的停止,于是今天写了一个服务,定时去检测其他wcf服务是否在线。...方案1:   对于httpbinding的wcf服务有个最简单的检测方法:就是用httpClient去请求一下服务地址看有没有服务描述xml返回。如果有就是live不然就是服务异常关闭了。...这个方法对于net.tcp绑定等不适用。   方案2:   使用反射动态生成channelProxy然后去尝试执行一个方法。...正常使用ChannelFactory调用wcf服务: var channelFactory = new ChannelFactory(endpoint); var proxy = this....这样,当需要监控新的wcf服务的时候只要在配置文件里添加一行协定,程序集,调用方法,endpoint的配置即可,当然协定所在的dll要复制到程序的跟目录下或者指定的文件下。

    1.3K70
    领券