parent
648bdf706e
commit
a07ad16e4d
|
|
@ -373,9 +373,20 @@ namespace Microsoft.AspNetCore.Server.IIS.Core
|
||||||
foreach (var headerPair in HttpResponseHeaders)
|
foreach (var headerPair in HttpResponseHeaders)
|
||||||
{
|
{
|
||||||
var headerValues = headerPair.Value;
|
var headerValues = headerPair.Value;
|
||||||
|
|
||||||
|
if (headerPair.Value.Count == 0)
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
var knownHeaderIndex = HttpApiTypes.HTTP_RESPONSE_HEADER_ID.IndexOfKnownHeader(headerPair.Key);
|
var knownHeaderIndex = HttpApiTypes.HTTP_RESPONSE_HEADER_ID.IndexOfKnownHeader(headerPair.Key);
|
||||||
for (var i = 0; i < headerValues.Count; i++)
|
for (var i = 0; i < headerValues.Count; i++)
|
||||||
{
|
{
|
||||||
|
if (string.IsNullOrEmpty(headerValues[i]))
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
var isFirst = i == 0;
|
var isFirst = i == 0;
|
||||||
var headerValueBytes = Encoding.UTF8.GetBytes(headerValues[i]);
|
var headerValueBytes = Encoding.UTF8.GetBytes(headerValues[i]);
|
||||||
fixed (byte* pHeaderValue = headerValueBytes)
|
fixed (byte* pHeaderValue = headerValueBytes)
|
||||||
|
|
|
||||||
|
|
@ -22,6 +22,15 @@ namespace Microsoft.AspNetCore.Server.IIS.FunctionalTests.InProcess
|
||||||
_fixture = fixture;
|
_fixture = fixture;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[ConditionalFact]
|
||||||
|
public async Task AddEmptyHeaderSkipped()
|
||||||
|
{
|
||||||
|
var response = await _fixture.Client.GetAsync("ResponseEmptyHeaders");
|
||||||
|
var responseText = await response.Content.ReadAsStringAsync();
|
||||||
|
Assert.Equal(HttpStatusCode.OK, response.StatusCode);
|
||||||
|
Assert.False(response.Headers.TryGetValues("EmptyHeader", out var headerValues));
|
||||||
|
}
|
||||||
|
|
||||||
[ConditionalFact]
|
[ConditionalFact]
|
||||||
public async Task AddResponseHeaders_HeaderValuesAreSetCorrectly()
|
public async Task AddResponseHeaders_HeaderValuesAreSetCorrectly()
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -379,6 +379,12 @@ namespace TestSite
|
||||||
await ctx.Response.WriteAsync("Request Complete");
|
await ctx.Response.WriteAsync("Request Complete");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private async Task ResponseEmptyHeaders(HttpContext ctx)
|
||||||
|
{
|
||||||
|
ctx.Response.Headers["EmptyHeader"] = "";
|
||||||
|
await ctx.Response.WriteAsync("EmptyHeaderShouldBeSkipped");
|
||||||
|
}
|
||||||
|
|
||||||
private async Task ResponseInvalidOrdering(HttpContext ctx)
|
private async Task ResponseInvalidOrdering(HttpContext ctx)
|
||||||
{
|
{
|
||||||
if (ctx.Request.Path.Equals("/SetStatusCodeAfterWrite"))
|
if (ctx.Request.Path.Equals("/SetStatusCodeAfterWrite"))
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue