Reacting to new Hosting API

This commit is contained in:
John Luo 2015-12-17 19:32:13 -08:00
parent 5e3c7cbbf0
commit 92fff3ccf3
9 changed files with 332 additions and 256 deletions

View File

@ -31,6 +31,14 @@ namespace HttpOverridesSample
} }
// Entry point for the application. // Entry point for the application.
public static void Main(string[] args) => WebApplication.Run<Startup>(args); public static void Main(string[] args)
{
var application = new WebApplicationBuilder()
.UseConfiguration(WebApplicationConfiguration.GetDefault(args))
.UseStartup<Startup>()
.Build();
application.Run();
}
} }
} }

View File

@ -1,4 +1,12 @@
{ {
"iisSettings": {
"windowsAuthentication": false,
"anonymousAuthentication": true,
"iisExpress": {
"applicationUrl": "http://localhost:49657/",
"sslPort": 0
}
},
"profiles": { "profiles": {
"IIS Express": { "IIS Express": {
"commandName": "IISExpress", "commandName": "IISExpress",
@ -9,13 +17,9 @@
}, },
"web": { "web": {
"commandName": "web", "commandName": "web",
"launchBrowser": true, "environmentVariables": {
"launchUrl": "http://localhost:5000/" "Hosting:Environment": "Development"
}, }
"kestrel": {
"commandName": "kestrel",
"launchBrowser": true,
"launchUrl": "http://localhost:5001/"
} }
} }
} }

View File

@ -1,4 +1,5 @@
using Microsoft.AspNet.Builder; using Microsoft.AspNet.Builder;
using Microsoft.AspNet.Hosting;
using Microsoft.AspNet.Http; using Microsoft.AspNet.Http;
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
@ -32,5 +33,16 @@ namespace ResponseBufferingSample
await context.Response.WriteAsync("Hi Bob!"); await context.Response.WriteAsync("Hi Bob!");
}); });
} }
// Entry point for the application.
public static void Main(string[] args)
{
var application = new WebApplicationBuilder()
.UseConfiguration(WebApplicationConfiguration.GetDefault(args))
.UseStartup<Startup>()
.Build();
application.Run();
}
} }
} }

View File

@ -0,0 +1,3 @@
{
"server": "Microsoft.AspNet.Server.Kestrel"
}

View File

@ -1,15 +1,14 @@
{ {
"webroot": "wwwroot",
"version": "1.0.0-*", "version": "1.0.0-*",
"dependencies": { "dependencies": {
"Kestrel": "1.0.0-*",
"Microsoft.AspNet.Buffering": "1.0.0-*", "Microsoft.AspNet.Buffering": "1.0.0-*",
"Microsoft.AspNet.Server.IIS": "1.0.0-*", "Microsoft.AspNet.Server.Kestrel": "1.0.0-*"
"Microsoft.AspNet.Server.WebListener": "1.0.0-*" },
"compilationOptions": {
"emitEntryPoint": true
}, },
"commands": { "commands": {
"web": "Microsoft.AspNet.Server.WebListener --server.urls=http://localhost:5000", "web": "ResponseBufferingSample"
"kestrel": "Kestrel --server.urls=http://localhost:5001"
}, },
"frameworks": { "frameworks": {
"dnx451": { }, "dnx451": { },

View File

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.webServer>
<handlers>
<add name="httpPlatformHandler" path="*" verb="*" modules="httpPlatformHandler" resourceType="Unspecified" />
</handlers>
<httpPlatform processPath="%DNX_PATH%" arguments="%DNX_ARGS%" forwardWindowsAuthToken="false" startupTimeLimit="3600" />
</system.webServer>
</configuration>

View File

@ -7,6 +7,7 @@ using System.IO;
using System.Linq; using System.Linq;
using System.Threading.Tasks; using System.Threading.Tasks;
using Microsoft.AspNet.Builder; using Microsoft.AspNet.Builder;
using Microsoft.AspNet.Hosting;
using Microsoft.AspNet.Http; using Microsoft.AspNet.Http;
using Microsoft.AspNet.Http.Features; using Microsoft.AspNet.Http.Features;
using Microsoft.AspNet.TestHost; using Microsoft.AspNet.TestHost;
@ -19,18 +20,20 @@ namespace Microsoft.AspNet.Buffering.Tests
[Fact] [Fact]
public async Task BufferResponse_SetsContentLength() public async Task BufferResponse_SetsContentLength()
{ {
var server = TestServer.Create(app => var builder = new WebApplicationBuilder()
{ .Configure(app =>
app.UseResponseBuffering();
app.Run(async context =>
{ {
Assert.False(context.Response.HasStarted); app.UseResponseBuffering();
Assert.True(context.Response.Body.CanSeek); app.Run(async context =>
await context.Response.WriteAsync("Hello World"); {
Assert.False(context.Response.HasStarted); Assert.False(context.Response.HasStarted);
Assert.True(context.Response.Body.CanSeek); Assert.True(context.Response.Body.CanSeek);
await context.Response.WriteAsync("Hello World");
Assert.False(context.Response.HasStarted);
Assert.True(context.Response.Body.CanSeek);
});
}); });
}); var server = new TestServer(builder);
var response = await server.CreateClient().GetAsync(""); var response = await server.CreateClient().GetAsync("");
response.EnsureSuccessStatusCode(); response.EnsureSuccessStatusCode();
@ -45,19 +48,21 @@ namespace Microsoft.AspNet.Buffering.Tests
[Fact] [Fact]
public async Task BufferResponseWithManualContentLength_NotReplaced() public async Task BufferResponseWithManualContentLength_NotReplaced()
{ {
var server = TestServer.Create(app => var builder = new WebApplicationBuilder()
{ .Configure(app =>
app.UseResponseBuffering();
app.Run(async context =>
{ {
context.Response.ContentLength = 12; app.UseResponseBuffering();
Assert.False(context.Response.HasStarted); app.Run(async context =>
Assert.True(context.Response.Body.CanSeek); {
await context.Response.WriteAsync("Hello World"); context.Response.ContentLength = 12;
Assert.False(context.Response.HasStarted); Assert.False(context.Response.HasStarted);
Assert.True(context.Response.Body.CanSeek); Assert.True(context.Response.Body.CanSeek);
await context.Response.WriteAsync("Hello World");
Assert.False(context.Response.HasStarted);
Assert.True(context.Response.Body.CanSeek);
});
}); });
}); var server = new TestServer(builder);
var response = await server.CreateClient().GetAsync(""); var response = await server.CreateClient().GetAsync("");
response.EnsureSuccessStatusCode(); response.EnsureSuccessStatusCode();
@ -71,36 +76,38 @@ namespace Microsoft.AspNet.Buffering.Tests
[Fact] [Fact]
public async Task Seek_AllowsResttingBuffer() public async Task Seek_AllowsResttingBuffer()
{ {
var server = TestServer.Create(app => var builder = new WebApplicationBuilder()
{ .Configure(app =>
app.UseResponseBuffering();
app.Run(async context =>
{ {
var body = context.Response.Body; app.UseResponseBuffering();
Assert.False(context.Response.HasStarted); app.Run(async context =>
Assert.True(body.CanSeek); {
Assert.Equal(0, body.Position); var body = context.Response.Body;
Assert.Equal(0, body.Length); Assert.False(context.Response.HasStarted);
Assert.True(body.CanSeek);
Assert.Equal(0, body.Position);
Assert.Equal(0, body.Length);
await context.Response.WriteAsync("Hello World"); await context.Response.WriteAsync("Hello World");
Assert.False(context.Response.HasStarted); Assert.False(context.Response.HasStarted);
Assert.True(context.Response.Body.CanSeek); Assert.True(context.Response.Body.CanSeek);
Assert.Equal(11, body.Position); Assert.Equal(11, body.Position);
Assert.Equal(11, body.Length); Assert.Equal(11, body.Length);
Assert.Throws<ArgumentOutOfRangeException>(() => body.Seek(1, SeekOrigin.Begin)); Assert.Throws<ArgumentOutOfRangeException>(() => body.Seek(1, SeekOrigin.Begin));
Assert.Throws<ArgumentException>(() => body.Seek(0, SeekOrigin.Current)); Assert.Throws<ArgumentException>(() => body.Seek(0, SeekOrigin.Current));
Assert.Throws<ArgumentException>(() => body.Seek(0, SeekOrigin.End)); Assert.Throws<ArgumentException>(() => body.Seek(0, SeekOrigin.End));
Assert.Equal(0, body.Seek(0, SeekOrigin.Begin)); Assert.Equal(0, body.Seek(0, SeekOrigin.Begin));
Assert.Equal(0, body.Position); Assert.Equal(0, body.Position);
Assert.Equal(0, body.Length); Assert.Equal(0, body.Length);
await context.Response.WriteAsync("12345"); await context.Response.WriteAsync("12345");
Assert.Equal(5, body.Position); Assert.Equal(5, body.Position);
Assert.Equal(5, body.Length); Assert.Equal(5, body.Length);
});
}); });
}); var server = new TestServer(builder);
var response = await server.CreateClient().GetAsync(""); var response = await server.CreateClient().GetAsync("");
response.EnsureSuccessStatusCode(); response.EnsureSuccessStatusCode();
@ -115,34 +122,36 @@ namespace Microsoft.AspNet.Buffering.Tests
[Fact] [Fact]
public async Task SetPosition_AllowsResttingBuffer() public async Task SetPosition_AllowsResttingBuffer()
{ {
var server = TestServer.Create(app => var builder = new WebApplicationBuilder()
{ .Configure(app =>
app.UseResponseBuffering();
app.Run(async context =>
{ {
var body = context.Response.Body; app.UseResponseBuffering();
Assert.False(context.Response.HasStarted); app.Run(async context =>
Assert.True(body.CanSeek); {
Assert.Equal(0, body.Position); var body = context.Response.Body;
Assert.Equal(0, body.Length); Assert.False(context.Response.HasStarted);
Assert.True(body.CanSeek);
Assert.Equal(0, body.Position);
Assert.Equal(0, body.Length);
await context.Response.WriteAsync("Hello World"); await context.Response.WriteAsync("Hello World");
Assert.False(context.Response.HasStarted); Assert.False(context.Response.HasStarted);
Assert.True(context.Response.Body.CanSeek); Assert.True(context.Response.Body.CanSeek);
Assert.Equal(11, body.Position); Assert.Equal(11, body.Position);
Assert.Equal(11, body.Length); Assert.Equal(11, body.Length);
Assert.Throws<ArgumentOutOfRangeException>(() => body.Position = 1); Assert.Throws<ArgumentOutOfRangeException>(() => body.Position = 1);
body.Position = 0; body.Position = 0;
Assert.Equal(0, body.Position); Assert.Equal(0, body.Position);
Assert.Equal(0, body.Length); Assert.Equal(0, body.Length);
await context.Response.WriteAsync("12345"); await context.Response.WriteAsync("12345");
Assert.Equal(5, body.Position); Assert.Equal(5, body.Position);
Assert.Equal(5, body.Length); Assert.Equal(5, body.Length);
});
}); });
}); var server = new TestServer(builder);
var response = await server.CreateClient().GetAsync(""); var response = await server.CreateClient().GetAsync("");
response.EnsureSuccessStatusCode(); response.EnsureSuccessStatusCode();
@ -157,34 +166,36 @@ namespace Microsoft.AspNet.Buffering.Tests
[Fact] [Fact]
public async Task SetLength_AllowsResttingBuffer() public async Task SetLength_AllowsResttingBuffer()
{ {
var server = TestServer.Create(app => var builder = new WebApplicationBuilder()
{ .Configure(app =>
app.UseResponseBuffering();
app.Run(async context =>
{ {
var body = context.Response.Body; app.UseResponseBuffering();
Assert.False(context.Response.HasStarted); app.Run(async context =>
Assert.True(body.CanSeek); {
Assert.Equal(0, body.Position); var body = context.Response.Body;
Assert.Equal(0, body.Length); Assert.False(context.Response.HasStarted);
Assert.True(body.CanSeek);
Assert.Equal(0, body.Position);
Assert.Equal(0, body.Length);
await context.Response.WriteAsync("Hello World"); await context.Response.WriteAsync("Hello World");
Assert.False(context.Response.HasStarted); Assert.False(context.Response.HasStarted);
Assert.True(context.Response.Body.CanSeek); Assert.True(context.Response.Body.CanSeek);
Assert.Equal(11, body.Position); Assert.Equal(11, body.Position);
Assert.Equal(11, body.Length); Assert.Equal(11, body.Length);
Assert.Throws<ArgumentOutOfRangeException>(() => body.SetLength(1)); Assert.Throws<ArgumentOutOfRangeException>(() => body.SetLength(1));
body.SetLength(0); body.SetLength(0);
Assert.Equal(0, body.Position); Assert.Equal(0, body.Position);
Assert.Equal(0, body.Length); Assert.Equal(0, body.Length);
await context.Response.WriteAsync("12345"); await context.Response.WriteAsync("12345");
Assert.Equal(5, body.Position); Assert.Equal(5, body.Position);
Assert.Equal(5, body.Length); Assert.Equal(5, body.Length);
});
}); });
}); var server = new TestServer(builder);
var response = await server.CreateClient().GetAsync(""); var response = await server.CreateClient().GetAsync("");
response.EnsureSuccessStatusCode(); response.EnsureSuccessStatusCode();
@ -199,27 +210,29 @@ namespace Microsoft.AspNet.Buffering.Tests
[Fact] [Fact]
public async Task DisableBufferingViaFeature() public async Task DisableBufferingViaFeature()
{ {
var server = TestServer.Create(app => var builder = new WebApplicationBuilder()
{ .Configure(app =>
app.UseResponseBuffering();
app.Run(async context =>
{ {
Assert.False(context.Response.HasStarted); app.UseResponseBuffering();
Assert.True(context.Response.Body.CanSeek); app.Run(async context =>
{
Assert.False(context.Response.HasStarted);
Assert.True(context.Response.Body.CanSeek);
var bufferingFeature = context.Features.Get<IHttpBufferingFeature>(); var bufferingFeature = context.Features.Get<IHttpBufferingFeature>();
Assert.NotNull(bufferingFeature); Assert.NotNull(bufferingFeature);
bufferingFeature.DisableResponseBuffering(); bufferingFeature.DisableResponseBuffering();
Assert.False(context.Response.HasStarted); Assert.False(context.Response.HasStarted);
Assert.False(context.Response.Body.CanSeek); Assert.False(context.Response.Body.CanSeek);
await context.Response.WriteAsync("Hello World"); await context.Response.WriteAsync("Hello World");
Assert.True(context.Response.HasStarted); Assert.True(context.Response.HasStarted);
Assert.False(context.Response.Body.CanSeek); Assert.False(context.Response.Body.CanSeek);
});
}); });
}); var server = new TestServer(builder);
var response = await server.CreateClient().GetAsync(""); var response = await server.CreateClient().GetAsync("");
response.EnsureSuccessStatusCode(); response.EnsureSuccessStatusCode();
@ -231,32 +244,34 @@ namespace Microsoft.AspNet.Buffering.Tests
[Fact] [Fact]
public async Task DisableBufferingViaFeatureAfterFirstWrite_Flushes() public async Task DisableBufferingViaFeatureAfterFirstWrite_Flushes()
{ {
var server = TestServer.Create(app => var builder = new WebApplicationBuilder()
{ .Configure(app =>
app.UseResponseBuffering();
app.Run(async context =>
{ {
Assert.False(context.Response.HasStarted); app.UseResponseBuffering();
Assert.True(context.Response.Body.CanSeek); app.Run(async context =>
{
Assert.False(context.Response.HasStarted);
Assert.True(context.Response.Body.CanSeek);
await context.Response.WriteAsync("Hello"); await context.Response.WriteAsync("Hello");
Assert.False(context.Response.HasStarted); Assert.False(context.Response.HasStarted);
Assert.True(context.Response.Body.CanSeek); Assert.True(context.Response.Body.CanSeek);
var bufferingFeature = context.Features.Get<IHttpBufferingFeature>(); var bufferingFeature = context.Features.Get<IHttpBufferingFeature>();
Assert.NotNull(bufferingFeature); Assert.NotNull(bufferingFeature);
bufferingFeature.DisableResponseBuffering(); bufferingFeature.DisableResponseBuffering();
Assert.True(context.Response.HasStarted); Assert.True(context.Response.HasStarted);
Assert.False(context.Response.Body.CanSeek); Assert.False(context.Response.Body.CanSeek);
await context.Response.WriteAsync(" World"); await context.Response.WriteAsync(" World");
Assert.True(context.Response.HasStarted); Assert.True(context.Response.HasStarted);
Assert.False(context.Response.Body.CanSeek); Assert.False(context.Response.Body.CanSeek);
});
}); });
}); var server = new TestServer(builder);
var response = await server.CreateClient().GetAsync(""); var response = await server.CreateClient().GetAsync("");
response.EnsureSuccessStatusCode(); response.EnsureSuccessStatusCode();
@ -268,25 +283,27 @@ namespace Microsoft.AspNet.Buffering.Tests
[Fact] [Fact]
public async Task FlushDisablesBuffering() public async Task FlushDisablesBuffering()
{ {
var server = TestServer.Create(app => var builder = new WebApplicationBuilder()
{ .Configure(app =>
app.UseResponseBuffering();
app.Run(async context =>
{ {
Assert.False(context.Response.HasStarted); app.UseResponseBuffering();
Assert.True(context.Response.Body.CanSeek); app.Run(async context =>
{
Assert.False(context.Response.HasStarted);
Assert.True(context.Response.Body.CanSeek);
context.Response.Body.Flush(); context.Response.Body.Flush();
Assert.True(context.Response.HasStarted); Assert.True(context.Response.HasStarted);
Assert.False(context.Response.Body.CanSeek); Assert.False(context.Response.Body.CanSeek);
await context.Response.WriteAsync("Hello World"); await context.Response.WriteAsync("Hello World");
Assert.True(context.Response.HasStarted); Assert.True(context.Response.HasStarted);
Assert.False(context.Response.Body.CanSeek); Assert.False(context.Response.Body.CanSeek);
});
}); });
}); var server = new TestServer(builder);
var response = await server.CreateClient().GetAsync(""); var response = await server.CreateClient().GetAsync("");
response.EnsureSuccessStatusCode(); response.EnsureSuccessStatusCode();

View File

@ -4,6 +4,7 @@
using System.Net.Http; using System.Net.Http;
using System.Threading.Tasks; using System.Threading.Tasks;
using Microsoft.AspNet.Builder; using Microsoft.AspNet.Builder;
using Microsoft.AspNet.Hosting;
using Microsoft.AspNet.TestHost; using Microsoft.AspNet.TestHost;
using Xunit; using Xunit;
@ -15,16 +16,18 @@ namespace Microsoft.AspNet.HttpOverrides
public async Task XHttpMethodOverrideHeaderAvaiableChangesRequestMethod() public async Task XHttpMethodOverrideHeaderAvaiableChangesRequestMethod()
{ {
var assertsExecuted = false; var assertsExecuted = false;
var server = TestServer.Create(app => var builder = new WebApplicationBuilder()
{ .Configure(app =>
app.UseHttpMethodOverride();
app.Run(context =>
{ {
assertsExecuted = true; app.UseHttpMethodOverride();
Assert.Equal("DELETE", context.Request.Method); app.Run(context =>
return Task.FromResult(0); {
assertsExecuted = true;
Assert.Equal("DELETE", context.Request.Method);
return Task.FromResult(0);
});
}); });
}); var server = new TestServer(builder);
var req = new HttpRequestMessage(HttpMethod.Post, ""); var req = new HttpRequestMessage(HttpMethod.Post, "");
req.Headers.Add("X-Http-Method-Override", "DELETE"); req.Headers.Add("X-Http-Method-Override", "DELETE");
@ -36,16 +39,19 @@ namespace Microsoft.AspNet.HttpOverrides
public async Task XHttpMethodOverrideHeaderUnavaiableDoesntChangeRequestMethod() public async Task XHttpMethodOverrideHeaderUnavaiableDoesntChangeRequestMethod()
{ {
var assertsExecuted = false; var assertsExecuted = false;
var server = TestServer.Create(app => var builder = new WebApplicationBuilder()
{ .Configure(app =>
app.UseHttpMethodOverride();
app.Run(context =>
{ {
Assert.Equal("POST",context.Request.Method); app.UseHttpMethodOverride();
assertsExecuted = true; app.Run(context =>
return Task.FromResult(0); {
Assert.Equal("POST",context.Request.Method);
assertsExecuted = true;
return Task.FromResult(0);
});
}); });
}); var server = new TestServer(builder);
var req = new HttpRequestMessage(HttpMethod.Post, ""); var req = new HttpRequestMessage(HttpMethod.Post, "");
await server.CreateClient().SendAsync(req); await server.CreateClient().SendAsync(req);
Assert.True(assertsExecuted); Assert.True(assertsExecuted);
@ -55,16 +61,19 @@ namespace Microsoft.AspNet.HttpOverrides
public async Task XHttpMethodOverrideFromGetRequestDoesntChangeMethodType() public async Task XHttpMethodOverrideFromGetRequestDoesntChangeMethodType()
{ {
var assertsExecuted = false; var assertsExecuted = false;
var server = TestServer.Create(app => var builder = new WebApplicationBuilder()
{ .Configure(app =>
app.UseHttpMethodOverride();
app.Run(context =>
{ {
Assert.Equal("GET", context.Request.Method); app.UseHttpMethodOverride();
assertsExecuted = true; app.Run(context =>
return Task.FromResult(0); {
Assert.Equal("GET", context.Request.Method);
assertsExecuted = true;
return Task.FromResult(0);
});
}); });
}); var server = new TestServer(builder);
var req = new HttpRequestMessage(HttpMethod.Get, ""); var req = new HttpRequestMessage(HttpMethod.Get, "");
await server.CreateClient().SendAsync(req); await server.CreateClient().SendAsync(req);
Assert.True(assertsExecuted); Assert.True(assertsExecuted);

View File

@ -4,6 +4,7 @@
using System.Net.Http; using System.Net.Http;
using System.Threading.Tasks; using System.Threading.Tasks;
using Microsoft.AspNet.Builder; using Microsoft.AspNet.Builder;
using Microsoft.AspNet.Hosting;
using Microsoft.AspNet.TestHost; using Microsoft.AspNet.TestHost;
using Xunit; using Xunit;
@ -16,19 +17,21 @@ namespace Microsoft.AspNet.HttpOverrides
{ {
var assertsExecuted = false; var assertsExecuted = false;
var server = TestServer.Create(app => var builder = new WebApplicationBuilder()
{ .Configure(app =>
app.UseOverrideHeaders(options =>
{ {
options.ForwardedOptions = ForwardedHeaders.XForwardedFor; app.UseOverrideHeaders(options =>
{
options.ForwardedOptions = ForwardedHeaders.XForwardedFor;
});
app.Run(context =>
{
Assert.Equal("11.111.111.11", context.Connection.RemoteIpAddress.ToString());
assertsExecuted = true;
return Task.FromResult(0);
});
}); });
app.Run(context => var server = new TestServer(builder);
{
Assert.Equal("11.111.111.11", context.Connection.RemoteIpAddress.ToString());
assertsExecuted = true;
return Task.FromResult(0);
});
});
var req = new HttpRequestMessage(HttpMethod.Get, ""); var req = new HttpRequestMessage(HttpMethod.Get, "");
req.Headers.Add("X-Forwarded-For", "11.111.111.11"); req.Headers.Add("X-Forwarded-For", "11.111.111.11");
@ -41,19 +44,21 @@ namespace Microsoft.AspNet.HttpOverrides
{ {
var assertsExecuted = false; var assertsExecuted = false;
var server = TestServer.Create(app => var builder = new WebApplicationBuilder()
{ .Configure(app =>
app.UseOverrideHeaders(options =>
{ {
options.ForwardedOptions = ForwardedHeaders.XForwardedFor; app.UseOverrideHeaders(options =>
{
options.ForwardedOptions = ForwardedHeaders.XForwardedFor;
});
app.Run(context =>
{
Assert.Null(context.Connection.RemoteIpAddress);
assertsExecuted = true;
return Task.FromResult(0);
});
}); });
app.Run(context => var server = new TestServer(builder);
{
Assert.Null(context.Connection.RemoteIpAddress);
assertsExecuted = true;
return Task.FromResult(0);
});
});
var req = new HttpRequestMessage(HttpMethod.Get, ""); var req = new HttpRequestMessage(HttpMethod.Get, "");
req.Headers.Add("X-Forwarded-For", "BAD-IP"); req.Headers.Add("X-Forwarded-For", "BAD-IP");
@ -66,19 +71,21 @@ namespace Microsoft.AspNet.HttpOverrides
{ {
var assertsExecuted = false; var assertsExecuted = false;
var server = TestServer.Create(app => var builder = new WebApplicationBuilder()
{ .Configure(app =>
app.UseOverrideHeaders(options =>
{ {
options.ForwardedOptions = ForwardedHeaders.XForwardedHost; app.UseOverrideHeaders(options =>
{
options.ForwardedOptions = ForwardedHeaders.XForwardedHost;
});
app.Run(context =>
{
Assert.Equal("testhost", context.Request.Host.ToString());
assertsExecuted = true;
return Task.FromResult(0);
});
}); });
app.Run(context => var server = new TestServer(builder);
{
Assert.Equal("testhost", context.Request.Host.ToString());
assertsExecuted = true;
return Task.FromResult(0);
});
});
var req = new HttpRequestMessage(HttpMethod.Get, ""); var req = new HttpRequestMessage(HttpMethod.Get, "");
req.Headers.Add("X-Forwarded-Host", "testhost"); req.Headers.Add("X-Forwarded-Host", "testhost");
@ -91,19 +98,21 @@ namespace Microsoft.AspNet.HttpOverrides
{ {
var assertsExecuted = false; var assertsExecuted = false;
var server = TestServer.Create(app => var builder = new WebApplicationBuilder()
{ .Configure(app =>
app.UseOverrideHeaders(options =>
{ {
options.ForwardedOptions = ForwardedHeaders.XForwardedProto; app.UseOverrideHeaders(options =>
{
options.ForwardedOptions = ForwardedHeaders.XForwardedProto;
});
app.Run(context =>
{
Assert.Equal("TestProtocol", context.Request.Scheme);
assertsExecuted = true;
return Task.FromResult(0);
});
}); });
app.Run(context => var server = new TestServer(builder);
{
Assert.Equal("TestProtocol", context.Request.Scheme);
assertsExecuted = true;
return Task.FromResult(0);
});
});
var req = new HttpRequestMessage(HttpMethod.Get, ""); var req = new HttpRequestMessage(HttpMethod.Get, "");
req.Headers.Add("X-Forwarded-Proto", "TestProtocol"); req.Headers.Add("X-Forwarded-Proto", "TestProtocol");
@ -123,21 +132,23 @@ namespace Microsoft.AspNet.HttpOverrides
{ {
var assertsExecuted = false; var assertsExecuted = false;
var server = TestServer.Create(app => var builder = new WebApplicationBuilder()
{ .Configure(app =>
app.UseOverrideHeaders(options =>
{ {
options.ForwardedOptions = ForwardedHeaders.All; app.UseOverrideHeaders(options =>
{
options.ForwardedOptions = ForwardedHeaders.All;
});
app.Run(context =>
{
Assert.Equal("11.111.111.11", context.Connection.RemoteIpAddress.ToString());
Assert.Equal("testhost", context.Request.Host.ToString());
Assert.Equal("Protocol", context.Request.Scheme);
assertsExecuted = true;
return Task.FromResult(0);
});
}); });
app.Run(context => var server = new TestServer(builder);
{
Assert.Equal("11.111.111.11", context.Connection.RemoteIpAddress.ToString());
Assert.Equal("testhost", context.Request.Host.ToString());
Assert.Equal("Protocol", context.Request.Scheme);
assertsExecuted = true;
return Task.FromResult(0);
});
});
var req = new HttpRequestMessage(HttpMethod.Get, ""); var req = new HttpRequestMessage(HttpMethod.Get, "");
req.Headers.Add("X-Forwarded-For", "11.111.111.11"); req.Headers.Add("X-Forwarded-For", "11.111.111.11");
@ -152,21 +163,23 @@ namespace Microsoft.AspNet.HttpOverrides
{ {
var assertsExecuted = false; var assertsExecuted = false;
var server = TestServer.Create(app => var builder = new WebApplicationBuilder()
{ .Configure(app =>
app.UseOverrideHeaders(options =>
{ {
options.ForwardedOptions = ForwardedHeaders.None; app.UseOverrideHeaders(options =>
{
options.ForwardedOptions = ForwardedHeaders.None;
});
app.Run(context =>
{
Assert.Null(context.Connection.RemoteIpAddress);
Assert.Equal("localhost", context.Request.Host.ToString());
Assert.Equal("http", context.Request.Scheme);
assertsExecuted = true;
return Task.FromResult(0);
});
}); });
app.Run(context => var server = new TestServer(builder);
{
Assert.Null(context.Connection.RemoteIpAddress);
Assert.Equal("localhost", context.Request.Host.ToString());
Assert.Equal("http", context.Request.Scheme);
assertsExecuted = true;
return Task.FromResult(0);
});
});
var req = new HttpRequestMessage(HttpMethod.Get, ""); var req = new HttpRequestMessage(HttpMethod.Get, "");
req.Headers.Add("X-Forwarded-For", "11.111.111.11"); req.Headers.Add("X-Forwarded-For", "11.111.111.11");
@ -181,22 +194,24 @@ namespace Microsoft.AspNet.HttpOverrides
{ {
var assertsExecuted = false; var assertsExecuted = false;
var server = TestServer.Create(app => var builder = new WebApplicationBuilder()
{ .Configure(app =>
app.UseOverrideHeaders(options =>
{ {
options.ForwardedOptions = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto; app.UseOverrideHeaders(options =>
}); {
app.Run(context => options.ForwardedOptions = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto;
{ });
Assert.Equal("11.111.111.11", context.Connection.RemoteIpAddress.ToString()); app.Run(context =>
Assert.Equal("localhost", context.Request.Host.ToString()); {
Assert.Equal("Protocol", context.Request.Scheme); Assert.Equal("11.111.111.11", context.Connection.RemoteIpAddress.ToString());
assertsExecuted = true; Assert.Equal("localhost", context.Request.Host.ToString());
return Task.FromResult(0); Assert.Equal("Protocol", context.Request.Scheme);
assertsExecuted = true;
return Task.FromResult(0);
});
}); });
}); var server = new TestServer(builder);
var req = new HttpRequestMessage(HttpMethod.Get, ""); var req = new HttpRequestMessage(HttpMethod.Get, "");
req.Headers.Add("X-Forwarded-For", "11.111.111.11"); req.Headers.Add("X-Forwarded-For", "11.111.111.11");