Exemple #1
0
 static void AddServicePrototypes(IContainerBuilder builder)
 {
     builder.AddServicePrototype(new ODataMessageReaderSettings()
     {
         EnableMessageStreamDisposal = false, MessageQuotas = new ODataMessageQuotas {
             MaxReceivedMessageSize = long.MaxValue
         }
     });
     builder.AddServicePrototype(new ODataMessageWriterSettings()
     {
         EnableMessageStreamDisposal = false, MessageQuotas = new ODataMessageQuotas {
             MaxReceivedMessageSize = long.MaxValue
         }
     });
 }
Exemple #2
0
 protected override void ConfigureContainer(IContainerBuilder builder)
 {
     base.ConfigureContainer(builder);
     builder.AddServicePrototype(new ODataSimplifiedOptions()
     {
         EnableWritingODataAnnotationWithoutPrefix = true,
         EnableReadingODataAnnotationWithoutPrefix = true,
     });
 }
        /// <summary>
        /// Adds the default OData services to the <see cref="IContainerBuilder"/>.
        /// </summary>
        /// <param name="builder">The <see cref="IContainerBuilder"/> to add the services to.</param>
        /// <returns>The <see cref="IContainerBuilder"/> instance itself.</returns>
        public static IContainerBuilder AddDefaultODataServices(this IContainerBuilder builder)
        {
            Debug.Assert(builder != null, "builder != null");

            builder.AddService <IJsonReaderFactory, DefaultJsonReaderFactory>(ServiceLifetime.Singleton);
            builder.AddService <IJsonWriterFactory, DefaultJsonWriterFactory>(ServiceLifetime.Singleton);
            builder.AddService(ServiceLifetime.Singleton, sp => ODataMediaTypeResolver.GetMediaTypeResolver(null));
            builder.AddService <ODataMessageInfo>(ServiceLifetime.Scoped);
            builder.AddServicePrototype(new ODataMessageReaderSettings());
            builder.AddService(ServiceLifetime.Scoped, sp => sp.GetServicePrototype <ODataMessageReaderSettings>().Clone());
            builder.AddServicePrototype(new ODataMessageWriterSettings());
            builder.AddService(ServiceLifetime.Scoped, sp => sp.GetServicePrototype <ODataMessageWriterSettings>().Clone());
            builder.AddService(ServiceLifetime.Singleton, sp => ODataPayloadValueConverter.GetPayloadValueConverter(null));
            builder.AddService <IEdmModel>(ServiceLifetime.Singleton, sp => EdmCoreModel.Instance);
            builder.AddService(ServiceLifetime.Singleton, sp => ODataUriResolver.GetUriResolver(null));
            builder.AddService <ODataUriParserSettings>(ServiceLifetime.Scoped);
            builder.AddService <UriPathParser>(ServiceLifetime.Scoped);
            builder.AddServicePrototype(new ODataSimplifiedOptions());
            builder.AddService(ServiceLifetime.Scoped, sp => sp.GetServicePrototype <ODataSimplifiedOptions>().Clone());

            return(builder);
        }
Exemple #4
0
        public static IContainerBuilder AddDefaultWebApiServices(this IContainerBuilder builder)
        {
            if (builder == null)
            {
                throw new ArgumentNullException(nameof(builder));
            }

            builder.AddService <IETagHandler, DefaultODataETagHandler>(ServiceLifetime.Singleton);

            //builder.AddService<IODataPathHandler, DefaultODataPathHandler>(ServiceLifetime.Singleton);

            // ReaderSettings and WriterSettings are registered as prototype services.
            // There will be a copy (if it is accessed) of each prototype for each request.
            builder.AddServicePrototype(new ODataMessageReaderSettings
            {
                EnableMessageStreamDisposal = false,
                MessageQuotas = new ODataMessageQuotas {
                    MaxReceivedMessageSize = Int64.MaxValue
                },
            });

            builder.AddServicePrototype(new ODataMessageWriterSettings
            {
                EnableMessageStreamDisposal = false,
                MessageQuotas = new ODataMessageQuotas {
                    MaxReceivedMessageSize = Int64.MaxValue
                },
            });

            // QueryValidators.
            builder.AddService <CountQueryValidator>(ServiceLifetime.Singleton);
            builder.AddService <FilterQueryValidator>(ServiceLifetime.Singleton);
            builder.AddService <ODataQueryValidator>(ServiceLifetime.Singleton);
            builder.AddService <OrderByQueryValidator>(ServiceLifetime.Singleton);
            builder.AddService <SelectExpandQueryValidator>(ServiceLifetime.Singleton);
            builder.AddService <SkipQueryValidator>(ServiceLifetime.Singleton);
            builder.AddService <SkipTokenQueryValidator>(ServiceLifetime.Singleton);
            builder.AddService <TopQueryValidator>(ServiceLifetime.Singleton);

            builder.AddService <SkipTokenHandler, DefaultSkipTokenHandler>(ServiceLifetime.Singleton);

            // SerializerProvider and DeserializerProvider.
            builder.AddService <ODataSerializerProvider, DefaultODataSerializerProvider>(ServiceLifetime.Singleton);
            builder.AddService <ODataDeserializerProvider, DefaultODataDeserializerProvider>(ServiceLifetime.Singleton);

            // Deserializers.
            builder.AddService <ODataResourceDeserializer>(ServiceLifetime.Singleton);
            builder.AddService <ODataEnumDeserializer>(ServiceLifetime.Singleton);
            builder.AddService <ODataPrimitiveDeserializer>(ServiceLifetime.Singleton);
            builder.AddService <ODataResourceSetDeserializer>(ServiceLifetime.Singleton);
            builder.AddService <ODataCollectionDeserializer>(ServiceLifetime.Singleton);
            builder.AddService <ODataEntityReferenceLinkDeserializer>(ServiceLifetime.Singleton);
            builder.AddService <ODataActionPayloadDeserializer>(ServiceLifetime.Singleton);
            builder.AddService <ODataDeltaResourceSetDeserializer>(ServiceLifetime.Singleton);

            // Serializers.
            builder.AddService <ODataEnumSerializer>(ServiceLifetime.Singleton);
            builder.AddService <ODataPrimitiveSerializer>(ServiceLifetime.Singleton);
            builder.AddService <ODataDeltaResourceSetSerializer>(ServiceLifetime.Singleton);
            builder.AddService <ODataResourceSetSerializer>(ServiceLifetime.Singleton);
            builder.AddService <ODataCollectionSerializer>(ServiceLifetime.Singleton);
            builder.AddService <ODataResourceSerializer>(ServiceLifetime.Singleton);
            builder.AddService <ODataServiceDocumentSerializer>(ServiceLifetime.Singleton);
            builder.AddService <ODataEntityReferenceLinkSerializer>(ServiceLifetime.Singleton);
            builder.AddService <ODataEntityReferenceLinksSerializer>(ServiceLifetime.Singleton);
            builder.AddService <ODataErrorSerializer>(ServiceLifetime.Singleton);
            builder.AddService <ODataMetadataSerializer>(ServiceLifetime.Singleton);
            builder.AddService <ODataRawValueSerializer>(ServiceLifetime.Singleton);

            // Binders.
            builder.AddService <ODataQuerySettings>(ServiceLifetime.Scoped);
            builder.AddService <FilterBinder>(ServiceLifetime.Transient);

            // HttpRequestScope.
            //builder.AddService<HttpRequestScope>(ServiceLifetime.Scoped);
            //builder.AddService(ServiceLifetime.Scoped, sp => sp.GetRequiredService<HttpRequestScope>().HttpRequest);
            return(builder);
        }
Exemple #5
0
        /// <summary>
        /// Injects the default Web API OData services.
        /// </summary>
        /// <param name="builder">The container builder.</param>
        /// <returns>The calling itself.</returns>
        public static IContainerBuilder AddDefaultWebApiServices(this IContainerBuilder builder)
        {
            if (builder == null)
            {
                throw Error.ArgumentNull(nameof(builder));
            }

            builder.AddService <IETagHandler, DefaultODataETagHandler>(ServiceLifetime.Singleton);

            //builder.AddService<IODataPathHandler, DefaultODataPathHandler>(ServiceLifetime.Singleton);

            // ReaderSettings and WriterSettings are registered as prototype services.
            // There will be a copy (if it is accessed) of each prototype for each request.
            builder.AddServicePrototype(new ODataMessageReaderSettings
            {
                EnableMessageStreamDisposal = false,
                MessageQuotas = new ODataMessageQuotas {
                    MaxReceivedMessageSize = Int64.MaxValue
                },

                // WebAPI should read untyped values as structural values by setting ReadUntypedAsString=false.
                // In ODL 8.x, ReadUntypedAsString option will be deleted.
                ReadUntypedAsString = false,

                // Enable read property name case-insensitive from payload.
                EnablePropertyNameCaseInsensitive = true
            });

            builder.AddServicePrototype(new ODataMessageWriterSettings
            {
                EnableMessageStreamDisposal = false,
                MessageQuotas = new ODataMessageQuotas {
                    MaxReceivedMessageSize = Int64.MaxValue
                },
            });

            // QueryValidators.
            builder.AddService <CountQueryValidator>(ServiceLifetime.Singleton);

            // FilterQueryValidator should be scoped, otherwise some instance field (for example:_currentNodeCount) should be a problem.
            builder.AddService <FilterQueryValidator>(ServiceLifetime.Scoped);

            builder.AddService <ODataQueryValidator>(ServiceLifetime.Singleton);
            builder.AddService <OrderByQueryValidator>(ServiceLifetime.Singleton);
            builder.AddService <SelectExpandQueryValidator>(ServiceLifetime.Singleton);
            builder.AddService <SkipQueryValidator>(ServiceLifetime.Singleton);
            builder.AddService <SkipTokenQueryValidator>(ServiceLifetime.Singleton);
            builder.AddService <TopQueryValidator>(ServiceLifetime.Singleton);

            builder.AddService <SkipTokenHandler, DefaultSkipTokenHandler>(ServiceLifetime.Singleton);

            // SerializerProvider and DeserializerProvider.
            builder.AddService <IODataSerializerProvider, ODataSerializerProvider>(ServiceLifetime.Singleton);
            builder.AddService <IODataDeserializerProvider, ODataDeserializerProvider>(ServiceLifetime.Singleton);

            // Deserializers.
            builder.AddService <ODataResourceDeserializer>(ServiceLifetime.Singleton);
            builder.AddService <ODataEnumDeserializer>(ServiceLifetime.Singleton);
            builder.AddService <ODataPrimitiveDeserializer>(ServiceLifetime.Singleton);
            builder.AddService <ODataResourceSetDeserializer>(ServiceLifetime.Singleton);
            builder.AddService <ODataCollectionDeserializer>(ServiceLifetime.Singleton);
            builder.AddService <ODataEntityReferenceLinkDeserializer>(ServiceLifetime.Singleton);
            builder.AddService <ODataActionPayloadDeserializer>(ServiceLifetime.Singleton);
            builder.AddService <ODataDeltaResourceSetDeserializer>(ServiceLifetime.Singleton);

            // Serializers.
            builder.AddService <ODataEnumSerializer>(ServiceLifetime.Singleton);
            builder.AddService <ODataPrimitiveSerializer>(ServiceLifetime.Singleton);
            builder.AddService <ODataDeltaResourceSetSerializer>(ServiceLifetime.Singleton);
            builder.AddService <ODataResourceSetSerializer>(ServiceLifetime.Singleton);
            builder.AddService <ODataCollectionSerializer>(ServiceLifetime.Singleton);
            builder.AddService <ODataResourceSerializer>(ServiceLifetime.Singleton);
            builder.AddService <ODataServiceDocumentSerializer>(ServiceLifetime.Singleton);
            builder.AddService <ODataEntityReferenceLinkSerializer>(ServiceLifetime.Singleton);
            builder.AddService <ODataEntityReferenceLinksSerializer>(ServiceLifetime.Singleton);
            builder.AddService <ODataErrorSerializer>(ServiceLifetime.Singleton);
            builder.AddService <ODataMetadataSerializer>(ServiceLifetime.Singleton);
            builder.AddService <ODataRawValueSerializer>(ServiceLifetime.Singleton);

            // Binders.
            builder.AddService <ODataQuerySettings>(ServiceLifetime.Scoped);

            builder.AddService <IFilterBinder, FilterBinder>(ServiceLifetime.Singleton);
            builder.AddService <IOrderByBinder, OrderByBinder>(ServiceLifetime.Singleton);
            builder.AddService <ISelectExpandBinder, SelectExpandBinder>(ServiceLifetime.Singleton);

            // HttpRequestScope.
            builder.AddService <HttpRequestScope>(ServiceLifetime.Scoped);
            builder.AddService(ServiceLifetime.Scoped, sp => sp.GetRequiredService <HttpRequestScope>().HttpRequest);
            return(builder);
        }