[3.1.x] Backport HttpContext.Items fix (#17237)
This commit is contained in:
parent
2d799789fe
commit
6902b14471
|
|
@ -101,7 +101,7 @@ namespace Microsoft.AspNetCore.Http
|
||||||
EmptyDictionary.Collection.CopyTo(array, arrayIndex);
|
EmptyDictionary.Collection.CopyTo(array, arrayIndex);
|
||||||
}
|
}
|
||||||
|
|
||||||
_items.CopyTo(array, arrayIndex);
|
_items?.CopyTo(array, arrayIndex);
|
||||||
}
|
}
|
||||||
|
|
||||||
int ICollection<KeyValuePair<object, object>>.Count => _items?.Count ?? 0;
|
int ICollection<KeyValuePair<object, object>>.Count => _items?.Count ?? 0;
|
||||||
|
|
@ -133,7 +133,7 @@ namespace Microsoft.AspNetCore.Http
|
||||||
IEnumerator<KeyValuePair<object, object>> IEnumerable<KeyValuePair<object, object>>.GetEnumerator()
|
IEnumerator<KeyValuePair<object, object>> IEnumerable<KeyValuePair<object, object>>.GetEnumerator()
|
||||||
=> _items?.GetEnumerator() ?? EmptyEnumerator.Instance;
|
=> _items?.GetEnumerator() ?? EmptyEnumerator.Instance;
|
||||||
|
|
||||||
IEnumerator IEnumerable.GetEnumerator() => _items.GetEnumerator() ?? EmptyEnumerator.Instance;
|
IEnumerator IEnumerable.GetEnumerator() => _items?.GetEnumerator() ?? EmptyEnumerator.Instance;
|
||||||
|
|
||||||
private class EmptyEnumerator : IEnumerator<KeyValuePair<object, object>>
|
private class EmptyEnumerator : IEnumerator<KeyValuePair<object, object>>
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,41 @@
|
||||||
|
// Copyright (c) .NET Foundation. All rights reserved.
|
||||||
|
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using System.Collections;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Globalization;
|
||||||
|
using System.IO;
|
||||||
|
using System.IO.Pipelines;
|
||||||
|
using Microsoft.AspNetCore.Http.Features;
|
||||||
|
using Microsoft.AspNetCore.Routing;
|
||||||
|
using Microsoft.Extensions.Primitives;
|
||||||
|
using Xunit;
|
||||||
|
|
||||||
|
namespace Microsoft.AspNetCore.Http
|
||||||
|
{
|
||||||
|
public class ItemsDictionaryTests
|
||||||
|
{
|
||||||
|
[Fact]
|
||||||
|
public void GetEnumerator_ShouldResolveWithoutNullReferenceException()
|
||||||
|
{
|
||||||
|
// Arrange
|
||||||
|
var dict = new ItemsDictionary();
|
||||||
|
|
||||||
|
// Act and Assert
|
||||||
|
IEnumerable en = (IEnumerable) dict;
|
||||||
|
Assert.NotNull(en.GetEnumerator());
|
||||||
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public void CopyTo_ShouldCopyItemsWithoutNullReferenceException() {
|
||||||
|
// Arrange
|
||||||
|
var dict = new ItemsDictionary();
|
||||||
|
var pairs = new KeyValuePair<object, object>[] { new KeyValuePair<object, object>("first", "value") };
|
||||||
|
|
||||||
|
// Act and Assert
|
||||||
|
ICollection<KeyValuePair<object, object>> cl = (ICollection<KeyValuePair<object, object>>) dict;
|
||||||
|
cl.CopyTo(pairs, 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue