diff --git a/src/Microsoft.AspNet.OData.Shared/Query/ODataQueryOptions.cs b/src/Microsoft.AspNet.OData.Shared/Query/ODataQueryOptions.cs
index 13da5b7cfb..2353b68a13 100644
--- a/src/Microsoft.AspNet.OData.Shared/Query/ODataQueryOptions.cs
+++ b/src/Microsoft.AspNet.OData.Shared/Query/ODataQueryOptions.cs
@@ -268,6 +268,22 @@ public bool IsSupportedQueryOption(string queryOptionName)
return IsSystemQueryOption(lowcaseQueryOptionName, this._enableNoDollarSignQueryOptions);
}
+ ///
+ /// Gets the maxpagesize from the request Prefer header.
+ ///
+ public int? RequestPrefersMaxPageSize
+ {
+ get
+ {
+ if (RequestPreferenceHelpers.RequestPrefersMaxPageSize(InternalRequest.Headers, out int pageSize))
+ {
+ return pageSize;
+ }
+
+ return null;
+ }
+ }
+
///
/// Apply the individual query to the given IQueryable in the right order.
///
@@ -428,10 +444,10 @@ internal IQueryable ApplyPaging(IQueryable result, ODataQuerySettings querySetti
pageSize = querySettings.ModelBoundPageSize.Value;
}
- int preferredPageSize = -1;
- if (RequestPreferenceHelpers.RequestPrefersMaxPageSize(InternalRequest.Headers, out preferredPageSize))
+ int? preferredPageSize = RequestPrefersMaxPageSize;
+ if (preferredPageSize.HasValue)
{
- pageSize = Math.Min(pageSize, preferredPageSize);
+ pageSize = Math.Min(pageSize, preferredPageSize.Value);
}
if (pageSize > 0)
diff --git a/test/UnitTest/Microsoft.AspNet.OData.Test/PublicApi/Microsoft.AspNet.OData.PublicApi.bsl b/test/UnitTest/Microsoft.AspNet.OData.Test/PublicApi/Microsoft.AspNet.OData.PublicApi.bsl
index ef8e9a3890..89dc63940d 100644
--- a/test/UnitTest/Microsoft.AspNet.OData.Test/PublicApi/Microsoft.AspNet.OData.PublicApi.bsl
+++ b/test/UnitTest/Microsoft.AspNet.OData.Test/PublicApi/Microsoft.AspNet.OData.PublicApi.bsl
@@ -2454,6 +2454,7 @@ public class Microsoft.AspNet.OData.Query.ODataQueryOptions {
OrderByQueryOption OrderBy { public get; }
ODataRawQueryOptions RawValues { public get; }
System.Net.Http.HttpRequestMessage Request { public get; }
+ System.Nullable`1[[System.Int32]] RequestPrefersMaxPageSize { public get; }
SelectExpandQueryOption SelectExpand { public get; }
SkipQueryOption Skip { public get; }
SkipTokenQueryOption SkipToken { public get; }
diff --git a/test/UnitTest/Microsoft.AspNetCore.OData.Test/PublicApi/Microsoft.AspNetCore.OData.PublicApi.bsl b/test/UnitTest/Microsoft.AspNetCore.OData.Test/PublicApi/Microsoft.AspNetCore.OData.PublicApi.bsl
index 82c87bfecd..6ea2b7951c 100644
--- a/test/UnitTest/Microsoft.AspNetCore.OData.Test/PublicApi/Microsoft.AspNetCore.OData.PublicApi.bsl
+++ b/test/UnitTest/Microsoft.AspNetCore.OData.Test/PublicApi/Microsoft.AspNetCore.OData.PublicApi.bsl
@@ -2609,6 +2609,7 @@ public class Microsoft.AspNet.OData.Query.ODataQueryOptions {
OrderByQueryOption OrderBy { public get; }
ODataRawQueryOptions RawValues { public get; }
Microsoft.AspNetCore.Http.HttpRequest Request { public get; }
+ System.Nullable`1[[System.Int32]] RequestPrefersMaxPageSize { public get; }
SelectExpandQueryOption SelectExpand { public get; }
SkipQueryOption Skip { public get; }
SkipTokenQueryOption SkipToken { public get; }
diff --git a/test/UnitTest/Microsoft.AspNetCore.OData.Test/PublicApi/Microsoft.AspNetCore3x.OData.PublicApi.bsl b/test/UnitTest/Microsoft.AspNetCore.OData.Test/PublicApi/Microsoft.AspNetCore3x.OData.PublicApi.bsl
index eaa74317bf..3621979dd2 100644
--- a/test/UnitTest/Microsoft.AspNetCore.OData.Test/PublicApi/Microsoft.AspNetCore3x.OData.PublicApi.bsl
+++ b/test/UnitTest/Microsoft.AspNetCore.OData.Test/PublicApi/Microsoft.AspNetCore3x.OData.PublicApi.bsl
@@ -2780,6 +2780,7 @@ public class Microsoft.AspNet.OData.Query.ODataQueryOptions {
OrderByQueryOption OrderBy { public get; }
ODataRawQueryOptions RawValues { public get; }
Microsoft.AspNetCore.Http.HttpRequest Request { public get; }
+ System.Nullable`1[[System.Int32]] RequestPrefersMaxPageSize { public get; }
SelectExpandQueryOption SelectExpand { public get; }
SkipQueryOption Skip { public get; }
SkipTokenQueryOption SkipToken { public get; }