public override void CopyFrom(ServiceModelExtensionElement from) { base.CopyFrom(from); DataContractSerializerElement element = (DataContractSerializerElement)from; this.IgnoreExtensionDataObject = element.IgnoreExtensionDataObject; this.MaxItemsInObjectGraph = element.MaxItemsInObjectGraph; }
public override void CopyFrom(ServiceModelExtensionElement from) { base.CopyFrom(from); DataContractSerializerElement source = (DataContractSerializerElement)from; #pragma warning suppress 56506 //[....]; base.CopyFrom() checks for 'from' being null this.IgnoreExtensionDataObject = source.IgnoreExtensionDataObject; this.MaxItemsInObjectGraph = source.MaxItemsInObjectGraph; }
public void DataContractSerializerElement_defaults () { DataContractSerializerElement element = new DataContractSerializerElement (); Assert.AreEqual ("System.ServiceModel.Dispatcher.DataContractSerializerServiceBehavior", element.BehaviorType.FullName, "BehaviorType"); Assert.AreEqual ("dataContractSerializer", element.ConfigurationElementName, "ConfigurationElementName"); Assert.AreEqual (false, element.IgnoreExtensionDataObject, "IgnoreExtensionDataObject"); Assert.AreEqual (65536, element.MaxItemsInObjectGraph, "MaxItemsInObjectGraph"); }
/// <summary> /// 获取启动服务参数 /// </summary> /// <param name="implementsContractType">实体契约类的类型</param> /// <param name="interfaceContractType">契约类型</param> /// <param name="uri">服务地址</param> /// <param name="binding">启动服务类型</param> public void GetServiceConfig(Type implementsContractType, Type interfaceContractType, Uri uri, BindingType binding) { ImplementsContractType = implementsContractType; AddService(implementsContractType.ToString()); ServiceEndpointElement item = new ServiceEndpointElement(uri, interfaceContractType.ToString()); item.BindingConfiguration = item.Name = interfaceContractType.ToString(); item.Binding = binding.ToString(); ServiceElement service = serviceconfig.Services[implementsContractType.ToString()]; service.Endpoints.Add(item); SetBindingParam(uri, binding, item.BindingConfiguration); if (!behaviorconfig.ServiceBehaviors.ContainsKey(service.BehaviorConfiguration)) { ServiceBehaviorElement haviorelement = new ServiceBehaviorElement();// _setting.BehaviorConfig.ServiceBehaviors[service.BehaviorConfiguration]; haviorelement.Name = service.BehaviorConfiguration; #region 并发设置 //List<ServiceThrottlingElement> throttlingConfig = haviorelement.OfType<ServiceThrottlingElement>().ToList(); ServiceThrottlingElement throttlingBehavior = new ServiceThrottlingElement();// host.Description.Behaviors.Find<ServiceThrottlingBehavior>(); //当前ServiceHost能够处理的最大并发消息数量,默认值为16 throttlingBehavior.MaxConcurrentCalls = int.MaxValue; //当前ServiceHost允许存在的InstanceContext的最大数量,默认值为26 throttlingBehavior.MaxConcurrentInstances = int.MaxValue; //当前ServiceHost允许的最大并发会话数量,默认值为10 throttlingBehavior.MaxConcurrentSessions = int.MaxValue; //throttlingConfig.Add(throttlingBehavior); haviorelement.Add(throttlingBehavior); #endregion #region 序列化最大项 DataContractSerializerElement dataContractSerializerElement = new System.ServiceModel.Configuration.DataContractSerializerElement(); dataContractSerializerElement.MaxItemsInObjectGraph = 2147483647; haviorelement.Add(dataContractSerializerElement); #endregion #region 是否充许客户端看到详细错误信息 ServiceDebugElement debugConfig = new ServiceDebugElement(); debugConfig.IncludeExceptionDetailInFaults = _isShowErrorInfoToClient; haviorelement.Add(debugConfig); #endregion behaviorconfig.ServiceBehaviors.Add(haviorelement); } }
/// <summary> /// 获取启动客户端参数 /// </summary> /// <param name="interfaceContractType">契约</param> /// <param name="uri">服务地址</param> /// <param name="binding">启动类型</param> public void GetClientConfig(Type interfaceContractType, Uri uri, BindingType binding) { ChannelEndpointElement item = AddClient(interfaceContractType, uri, binding); SetBindingParam(uri, binding, item.BindingConfiguration); if (!behaviorconfig.EndpointBehaviors.ContainsKey(item.BehaviorConfiguration)) { EndpointBehaviorElement haviorelement = new EndpointBehaviorElement();// _setting.BehaviorConfig.ServiceBehaviors[service.BehaviorConfiguration]; haviorelement.Name = item.BehaviorConfiguration; #region 序列化最大项 DataContractSerializerElement dataContractSerializerElement = new System.ServiceModel.Configuration.DataContractSerializerElement(); dataContractSerializerElement.MaxItemsInObjectGraph = 2147483647; haviorelement.Add(dataContractSerializerElement); #endregion #region 是否充许客户端看到详细错误信息 CallbackDebugElement debugConfig = new CallbackDebugElement(); debugConfig.IncludeExceptionDetailInFaults = _isShowErrorInfoToClient; haviorelement.Add(debugConfig); #endregion behaviorconfig.EndpointBehaviors.Add(haviorelement); } }