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"); }
public static void BuildingServiceaBehavior(WCFServiceMeta wCFServiceMeta, ServiceElement serviceElement, SpringServiceHost ssh) { ServiceBehaviorElement sbe = null; if (serviceElement.BehaviorConfiguration != "" && wCFServiceMeta.BehaviorsConfiguration != null) { if (wCFServiceMeta.BehaviorsConfiguration.ServiceBehaviors.ContainsKey(serviceElement.BehaviorConfiguration)) { ServiceBehaviorElementCollection sbec = wCFServiceMeta.BehaviorsConfiguration.ServiceBehaviors; foreach (ServiceBehaviorElement o in sbec) { if (o.Name == serviceElement.BehaviorConfiguration) { sbe = o; break; } } if (sbe != null) { //ServiceBehavior smb = new ServiceMetadataBehavior(); foreach (var metadata in sbe) { switch (metadata.GetType().FullName) { case "System.ServiceModel.Configuration.DataContractSerializerElement": { DataContractSerializerElement dse = metadata as DataContractSerializerElement; if (dse != null) { int i = dse.MaxItemsInObjectGraph; ContractDescription cd = ssh.Description.Endpoints.FirstOrDefault(o => o.Name != "IMetadataExchange").Contract; OperationDescriptionCollection opdc = cd.Operations; foreach (OperationDescription odp in opdc) { DataContractSerializerOperationBehavior dsb = new DataContractSerializerOperationBehavior(odp); dsb.IgnoreExtensionDataObject = dse.IgnoreExtensionDataObject; dsb.MaxItemsInObjectGraph = dse.MaxItemsInObjectGraph; odp.Behaviors.Remove <DataContractSerializerOperationBehavior>(); odp.Behaviors.Add(dsb); } return; } break; } } } } } } }
public void DataContractSerializerElement() { EndpointBehaviorElement behavior = OpenConfig(); DataContractSerializerElement element = (DataContractSerializerElement)behavior [typeof(DataContractSerializerElement)]; if (element == null) { Assert.Fail("DataContractSerializerElement is not exist in collection."); } Assert.AreEqual("System.ServiceModel.Dispatcher.DataContractSerializerServiceBehavior", element.BehaviorType.FullName, "BehaviorType"); Assert.AreEqual("dataContractSerializer", element.ConfigurationElementName, "ConfigurationElementName"); Assert.AreEqual(true, element.IgnoreExtensionDataObject, "IgnoreExtensionDataObject"); Assert.AreEqual(32768, element.MaxItemsInObjectGraph, "MaxItemsInObjectGraph"); }
/// <summary> /// Applies customization to the given factory object /// </summary> /// <param name="factory">Factory object to fixup</param> private static void FixupFactory(ChannelFactory factory) { try { // ********************* // WORKAROUND: // ********************* // The endpoint behavior in the config file is not being applied to the operation contratcs correctly. // Manually apply the settings from the first endpoint behavior in the config file. // ********************* EndpointBehaviorElement behavior = GetEndpointBehavior(string.Empty); DataContractSerializerElement dcs = null; if (behavior != null) { foreach (BehaviorExtensionElement obj in behavior) { if (obj is DataContractSerializerElement) { dcs = obj as DataContractSerializerElement; break; } } } if (dcs != null) { foreach (OperationDescription op in factory.Endpoint.Contract.Operations) { DataContractSerializerOperationBehavior dcb = op.Behaviors.Find <DataContractSerializerOperationBehavior>() as DataContractSerializerOperationBehavior; if (dcb != null) { dcb.MaxItemsInObjectGraph = dcs.MaxItemsInObjectGraph; } } } } catch (Exception ex) { System.Diagnostics.Debug.WriteLine(ex.Message, string.Format("{0}.{1}.{2}", MethodBase.GetCurrentMethod().DeclaringType.Namespace, MethodBase.GetCurrentMethod().DeclaringType.Name, MethodBase.GetCurrentMethod().Name)); throw; } }