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,7 +20,8 @@ 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.UseResponseBuffering();
app.Run(async context => app.Run(async context =>
@ -31,6 +33,7 @@ namespace Microsoft.AspNet.Buffering.Tests
Assert.True(context.Response.Body.CanSeek); 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,7 +48,8 @@ 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.UseResponseBuffering();
app.Run(async context => app.Run(async context =>
@ -58,6 +62,7 @@ namespace Microsoft.AspNet.Buffering.Tests
Assert.True(context.Response.Body.CanSeek); 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,7 +76,8 @@ 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.UseResponseBuffering();
app.Run(async context => app.Run(async context =>
@ -101,6 +107,7 @@ namespace Microsoft.AspNet.Buffering.Tests
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,7 +122,8 @@ 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.UseResponseBuffering();
app.Run(async context => app.Run(async context =>
@ -143,6 +151,7 @@ namespace Microsoft.AspNet.Buffering.Tests
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,7 +166,8 @@ 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.UseResponseBuffering();
app.Run(async context => app.Run(async context =>
@ -185,6 +195,7 @@ namespace Microsoft.AspNet.Buffering.Tests
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,7 +210,8 @@ 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.UseResponseBuffering();
app.Run(async context => app.Run(async context =>
@ -220,6 +232,7 @@ namespace Microsoft.AspNet.Buffering.Tests
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,7 +244,8 @@ 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.UseResponseBuffering();
app.Run(async context => app.Run(async context =>
@ -257,6 +271,7 @@ namespace Microsoft.AspNet.Buffering.Tests
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,7 +283,8 @@ 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.UseResponseBuffering();
app.Run(async context => app.Run(async context =>
@ -287,6 +303,7 @@ namespace Microsoft.AspNet.Buffering.Tests
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,7 +16,8 @@ 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.UseHttpMethodOverride();
app.Run(context => app.Run(context =>
@ -25,6 +27,7 @@ namespace Microsoft.AspNet.HttpOverrides
return Task.FromResult(0); 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,7 +39,8 @@ 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.UseHttpMethodOverride();
app.Run(context => app.Run(context =>
@ -46,6 +50,8 @@ namespace Microsoft.AspNet.HttpOverrides
return Task.FromResult(0); 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,7 +61,8 @@ 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.UseHttpMethodOverride();
app.Run(context => app.Run(context =>
@ -65,6 +72,8 @@ namespace Microsoft.AspNet.HttpOverrides
return Task.FromResult(0); 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,7 +17,8 @@ namespace Microsoft.AspNet.HttpOverrides
{ {
var assertsExecuted = false; var assertsExecuted = false;
var server = TestServer.Create(app => var builder = new WebApplicationBuilder()
.Configure(app =>
{ {
app.UseOverrideHeaders(options => app.UseOverrideHeaders(options =>
{ {
@ -29,6 +31,7 @@ namespace Microsoft.AspNet.HttpOverrides
return Task.FromResult(0); 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");
@ -41,7 +44,8 @@ namespace Microsoft.AspNet.HttpOverrides
{ {
var assertsExecuted = false; var assertsExecuted = false;
var server = TestServer.Create(app => var builder = new WebApplicationBuilder()
.Configure(app =>
{ {
app.UseOverrideHeaders(options => app.UseOverrideHeaders(options =>
{ {
@ -54,6 +58,7 @@ namespace Microsoft.AspNet.HttpOverrides
return Task.FromResult(0); 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", "BAD-IP"); req.Headers.Add("X-Forwarded-For", "BAD-IP");
@ -66,7 +71,8 @@ namespace Microsoft.AspNet.HttpOverrides
{ {
var assertsExecuted = false; var assertsExecuted = false;
var server = TestServer.Create(app => var builder = new WebApplicationBuilder()
.Configure(app =>
{ {
app.UseOverrideHeaders(options => app.UseOverrideHeaders(options =>
{ {
@ -79,6 +85,7 @@ namespace Microsoft.AspNet.HttpOverrides
return Task.FromResult(0); 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-Host", "testhost"); req.Headers.Add("X-Forwarded-Host", "testhost");
@ -91,7 +98,8 @@ namespace Microsoft.AspNet.HttpOverrides
{ {
var assertsExecuted = false; var assertsExecuted = false;
var server = TestServer.Create(app => var builder = new WebApplicationBuilder()
.Configure(app =>
{ {
app.UseOverrideHeaders(options => app.UseOverrideHeaders(options =>
{ {
@ -104,6 +112,7 @@ namespace Microsoft.AspNet.HttpOverrides
return Task.FromResult(0); 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-Proto", "TestProtocol"); req.Headers.Add("X-Forwarded-Proto", "TestProtocol");
@ -123,7 +132,8 @@ namespace Microsoft.AspNet.HttpOverrides
{ {
var assertsExecuted = false; var assertsExecuted = false;
var server = TestServer.Create(app => var builder = new WebApplicationBuilder()
.Configure(app =>
{ {
app.UseOverrideHeaders(options => app.UseOverrideHeaders(options =>
{ {
@ -138,6 +148,7 @@ namespace Microsoft.AspNet.HttpOverrides
return Task.FromResult(0); 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");
@ -152,7 +163,8 @@ namespace Microsoft.AspNet.HttpOverrides
{ {
var assertsExecuted = false; var assertsExecuted = false;
var server = TestServer.Create(app => var builder = new WebApplicationBuilder()
.Configure(app =>
{ {
app.UseOverrideHeaders(options => app.UseOverrideHeaders(options =>
{ {
@ -167,6 +179,7 @@ namespace Microsoft.AspNet.HttpOverrides
return Task.FromResult(0); 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");
@ -181,7 +194,8 @@ namespace Microsoft.AspNet.HttpOverrides
{ {
var assertsExecuted = false; var assertsExecuted = false;
var server = TestServer.Create(app => var builder = new WebApplicationBuilder()
.Configure(app =>
{ {
app.UseOverrideHeaders(options => app.UseOverrideHeaders(options =>
{ {
@ -197,6 +211,7 @@ namespace Microsoft.AspNet.HttpOverrides
}); });
}); });
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");