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");
		}
Example #4
0
        /// <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);
            }
        }
Example #5
0
        /// <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);
            }
        }