Skip to content

Commit 9a0c7db

Browse files
authored
update di settings (#1344)
1 parent f7b2fac commit 9a0c7db

File tree

4 files changed

+71
-8
lines changed

4 files changed

+71
-8
lines changed

src/Microsoft.AspNetCore.OData/Abstracts/ODataServiceCollectionExtensions.cs

+2-2
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ public static IServiceCollection AddDefaultWebApiServices(this IServiceCollectio
3838
// ReaderSettings and WriterSettings are registered as prototype services.
3939
// There will be a copy (if it is accessed) of each prototype for each request.
4040
#pragma warning disable CS0618 // ReadUntypedAsString is obsolete in ODL 8.
41-
services.AddSingleton(new ODataMessageReaderSettings
41+
services.AddScoped(sp => new ODataMessageReaderSettings
4242
{
4343
EnableMessageStreamDisposal = false,
4444
MessageQuotas = new ODataMessageQuotas { MaxReceivedMessageSize = Int64.MaxValue },
@@ -53,7 +53,7 @@ public static IServiceCollection AddDefaultWebApiServices(this IServiceCollectio
5353
});
5454
#pragma warning restore CS0618 // Type or member is obsolete
5555

56-
services.AddSingleton(new ODataMessageWriterSettings
56+
services.AddScoped(sp => new ODataMessageWriterSettings
5757
{
5858
EnableMessageStreamDisposal = false,
5959
MessageQuotas = new ODataMessageQuotas { MaxReceivedMessageSize = Int64.MaxValue },

src/Microsoft.AspNetCore.OData/Microsoft.AspNetCore.OData.csproj

+3-3
Original file line numberDiff line numberDiff line change
@@ -28,9 +28,9 @@
2828
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
2929
</PackageReference>
3030
<PackageReference Include="Microsoft.OData.ModelBuilder" Version="2.0.0" />
31-
<PackageReference Include="Microsoft.OData.Core" Version="8.0.1" />
32-
<PackageReference Include="Microsoft.OData.Edm" Version="8.0.1" />
33-
<PackageReference Include="Microsoft.Spatial" Version="8.0.1" />
31+
<PackageReference Include="Microsoft.OData.Core" Version="8.0.2" />
32+
<PackageReference Include="Microsoft.OData.Edm" Version="8.0.2" />
33+
<PackageReference Include="Microsoft.Spatial" Version="8.0.2" />
3434
<PackageReference Include="Microsoft.SourceLink.GitHub" Version="1.0.0">
3535
<PrivateAssets>all</PrivateAssets>
3636
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>

src/Microsoft.AspNetCore.OData/Microsoft.AspNetCore.OData.xml

+3-3
Original file line numberDiff line numberDiff line change
@@ -9471,9 +9471,9 @@
94719471
</member>
94729472
<member name="M:Microsoft.AspNetCore.OData.Query.Expressions.QueryBinder.CreateDynamicPropertyAccessExpression(System.Linq.Expressions.Expression,System.String,Microsoft.AspNetCore.OData.Query.Expressions.QueryBinderContext)">
94739473
<summary>
9474-
Creates an expression for retrieving a dynamic property from the dynamic properties container property.
9474+
Creates an expression for retrieving a dynamic property from the container property.
94759475
</summary>
9476-
<param name="containerPropertyAccessExpr">The dynamic properties container property access expression.</param>
9476+
<param name="containerPropertyAccessExpr">The container property access expression.</param>
94779477
<param name="propertyName">The dynamic property name.</param>
94789478
<param name="context">The query binder context.</param>
94799479
<returns>The LINQ <see cref="T:System.Linq.Expressions.Expression"/> created.</returns>
@@ -9522,7 +9522,7 @@
95229522
</member>
95239523
<member name="M:Microsoft.AspNetCore.OData.Query.Expressions.QueryBinder.CreateNestedDynamicPropertyAccessExpression(System.Linq.Expressions.Expression,System.String,Microsoft.OData.UriParser.QueryNodeKind,Microsoft.AspNetCore.OData.Query.Expressions.QueryBinderContext)">
95249524
<summary>
9525-
Creates an expression for retrieving a dynamic property from the dynamic properties container property.
9525+
Creates an expression for retrieving a dynamic property from the container property.
95269526
</summary>
95279527
<param name="sourceExpr">The source expression.</param>
95289528
<param name="propertyName">The property name.</param>

test/Microsoft.AspNetCore.OData.Tests/Abstracts/DefaultContainerBuilderTests.cs

+63
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,69 @@ public void AddScopedService_Works()
136136
Assert.NotEqual(o11, o21);
137137
}
138138

139+
[Fact]
140+
public void MessageReaderIsScoped()
141+
{
142+
// Arrange
143+
IServiceCollection services = new ServiceCollection();
144+
services.AddDefaultWebApiServices();
145+
IServiceProvider container = services.BuildServiceProvider();
146+
147+
// Act
148+
IServiceProvider scopedContainer1 = container.GetRequiredService<IServiceScopeFactory>()
149+
.CreateScope().ServiceProvider;
150+
ODataMessageReaderSettings reader11 = scopedContainer1.GetService<ODataMessageReaderSettings>();
151+
ODataMessageReaderSettings reader12 = scopedContainer1.GetService<ODataMessageReaderSettings>();
152+
153+
// Assert
154+
Assert.NotNull(reader11);
155+
Assert.NotNull(reader12);
156+
Assert.Equal(reader11, reader12);
157+
158+
IServiceProvider scopedContainer2 = container.GetRequiredService<IServiceScopeFactory>()
159+
.CreateScope().ServiceProvider;
160+
ODataMessageReaderSettings reader21 = scopedContainer2.GetService<ODataMessageReaderSettings>();
161+
ODataMessageReaderSettings reader22 = scopedContainer2.GetService<ODataMessageReaderSettings>();
162+
163+
Assert.NotNull(reader21);
164+
Assert.NotNull(reader22);
165+
Assert.Equal(reader21, reader22);
166+
167+
Assert.NotEqual(reader11, reader21);
168+
}
169+
170+
171+
[Fact]
172+
public void MessageWriterIsScoped()
173+
{
174+
// Arrange
175+
IServiceCollection services = new ServiceCollection();
176+
services.AddDefaultWebApiServices();
177+
IServiceProvider container = services.BuildServiceProvider();
178+
179+
// Act
180+
IServiceProvider scopedContainer1 = container.GetRequiredService<IServiceScopeFactory>()
181+
.CreateScope().ServiceProvider;
182+
ODataMessageWriterSettings writer11 = scopedContainer1.GetService<ODataMessageWriterSettings>();
183+
ODataMessageWriterSettings writer12 = scopedContainer1.GetService<ODataMessageWriterSettings>();
184+
185+
// Assert
186+
Assert.NotNull(writer11);
187+
Assert.NotNull(writer12);
188+
Assert.Equal(writer11, writer12);
189+
190+
IServiceProvider scopedContainer2 = container.GetRequiredService<IServiceScopeFactory>()
191+
.CreateScope().ServiceProvider;
192+
ODataMessageWriterSettings writer21 = scopedContainer2.GetService<ODataMessageWriterSettings>();
193+
ODataMessageWriterSettings writer22 = scopedContainer2.GetService<ODataMessageWriterSettings>();
194+
195+
Assert.NotNull(writer21);
196+
Assert.NotNull(writer22);
197+
Assert.Equal(writer21, writer22);
198+
199+
Assert.NotEqual(writer11, writer21);
200+
}
201+
139202
private interface ITestService { }
140203

141204
private class TestService : ITestService { }

0 commit comments

Comments
 (0)