Beispiel #1
0
        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");
        }
Beispiel #2
0
        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;
                            }
                            }
                        }
                    }
                }
            }
        }
Beispiel #3
0
        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");
        }
Beispiel #4
0
 /// <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;
     }
 }