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.
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": {
"IIS Express": {
"commandName": "IISExpress",
@ -9,13 +17,9 @@
},
"web": {
"commandName": "web",
"launchBrowser": true,
"launchUrl": "http://localhost:5000/"
},
"kestrel": {
"commandName": "kestrel",
"launchBrowser": true,
"launchUrl": "http://localhost:5001/"
"environmentVariables": {
"Hosting:Environment": "Development"
}
}
}
}

View File

@ -1,4 +1,5 @@
using Microsoft.AspNet.Builder;
using Microsoft.AspNet.Hosting;
using Microsoft.AspNet.Http;
using Microsoft.Extensions.DependencyInjection;
@ -32,5 +33,16 @@ namespace ResponseBufferingSample
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-*",
"dependencies": {
"Kestrel": "1.0.0-*",
"Microsoft.AspNet.Buffering": "1.0.0-*",
"Microsoft.AspNet.Server.IIS": "1.0.0-*",
"Microsoft.AspNet.Server.WebListener": "1.0.0-*"
"Microsoft.AspNet.Server.Kestrel": "1.0.0-*"
},
"compilationOptions": {
"emitEntryPoint": true
},
"commands": {
"web": "Microsoft.AspNet.Server.WebListener --server.urls=http://localhost:5000",
"kestrel": "Kestrel --server.urls=http://localhost:5001"
"web": "ResponseBufferingSample"
},
"frameworks": {
"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.Threading.Tasks;
using Microsoft.AspNet.Builder;
using Microsoft.AspNet.Hosting;
using Microsoft.AspNet.Http;
using Microsoft.AspNet.Http.Features;
using Microsoft.AspNet.TestHost;
@ -19,7 +20,8 @@ namespace Microsoft.AspNet.Buffering.Tests
[Fact]
public async Task BufferResponse_SetsContentLength()
{
var server = TestServer.Create(app =>
var builder = new WebApplicationBuilder()
.Configure(app =>
{
app.UseResponseBuffering();
app.Run(async context =>
@ -31,6 +33,7 @@ namespace Microsoft.AspNet.Buffering.Tests
Assert.True(context.Response.Body.CanSeek);
});
});
var server = new TestServer(builder);
var response = await server.CreateClient().GetAsync("");
response.EnsureSuccessStatusCode();
@ -45,7 +48,8 @@ namespace Microsoft.AspNet.Buffering.Tests
[Fact]
public async Task BufferResponseWithManualContentLength_NotReplaced()
{
var server = TestServer.Create(app =>
var builder = new WebApplicationBuilder()
.Configure(app =>
{
app.UseResponseBuffering();
app.Run(async context =>
@ -58,6 +62,7 @@ namespace Microsoft.AspNet.Buffering.Tests
Assert.True(context.Response.Body.CanSeek);
});
});
var server = new TestServer(builder);
var response = await server.CreateClient().GetAsync("");
response.EnsureSuccessStatusCode();
@ -71,7 +76,8 @@ namespace Microsoft.AspNet.Buffering.Tests
[Fact]
public async Task Seek_AllowsResttingBuffer()
{
var server = TestServer.Create(app =>
var builder = new WebApplicationBuilder()
.Configure(app =>
{
app.UseResponseBuffering();
app.Run(async context =>
@ -101,6 +107,7 @@ namespace Microsoft.AspNet.Buffering.Tests
Assert.Equal(5, body.Length);
});
});
var server = new TestServer(builder);
var response = await server.CreateClient().GetAsync("");
response.EnsureSuccessStatusCode();
@ -115,7 +122,8 @@ namespace Microsoft.AspNet.Buffering.Tests
[Fact]
public async Task SetPosition_AllowsResttingBuffer()
{
var server = TestServer.Create(app =>
var builder = new WebApplicationBuilder()
.Configure(app =>
{
app.UseResponseBuffering();
app.Run(async context =>
@ -143,6 +151,7 @@ namespace Microsoft.AspNet.Buffering.Tests
Assert.Equal(5, body.Length);
});
});
var server = new TestServer(builder);
var response = await server.CreateClient().GetAsync("");
response.EnsureSuccessStatusCode();
@ -157,7 +166,8 @@ namespace Microsoft.AspNet.Buffering.Tests
[Fact]
public async Task SetLength_AllowsResttingBuffer()
{
var server = TestServer.Create(app =>
var builder = new WebApplicationBuilder()
.Configure(app =>
{
app.UseResponseBuffering();
app.Run(async context =>
@ -185,6 +195,7 @@ namespace Microsoft.AspNet.Buffering.Tests
Assert.Equal(5, body.Length);
});
});
var server = new TestServer(builder);
var response = await server.CreateClient().GetAsync("");
response.EnsureSuccessStatusCode();
@ -199,7 +210,8 @@ namespace Microsoft.AspNet.Buffering.Tests
[Fact]
public async Task DisableBufferingViaFeature()
{
var server = TestServer.Create(app =>
var builder = new WebApplicationBuilder()
.Configure(app =>
{
app.UseResponseBuffering();
app.Run(async context =>
@ -220,6 +232,7 @@ namespace Microsoft.AspNet.Buffering.Tests
Assert.False(context.Response.Body.CanSeek);
});
});
var server = new TestServer(builder);
var response = await server.CreateClient().GetAsync("");
response.EnsureSuccessStatusCode();
@ -231,7 +244,8 @@ namespace Microsoft.AspNet.Buffering.Tests
[Fact]
public async Task DisableBufferingViaFeatureAfterFirstWrite_Flushes()
{
var server = TestServer.Create(app =>
var builder = new WebApplicationBuilder()
.Configure(app =>
{
app.UseResponseBuffering();
app.Run(async context =>
@ -257,6 +271,7 @@ namespace Microsoft.AspNet.Buffering.Tests
Assert.False(context.Response.Body.CanSeek);
});
});
var server = new TestServer(builder);
var response = await server.CreateClient().GetAsync("");
response.EnsureSuccessStatusCode();
@ -268,7 +283,8 @@ namespace Microsoft.AspNet.Buffering.Tests
[Fact]
public async Task FlushDisablesBuffering()
{
var server = TestServer.Create(app =>
var builder = new WebApplicationBuilder()
.Configure(app =>
{
app.UseResponseBuffering();
app.Run(async context =>
@ -287,6 +303,7 @@ namespace Microsoft.AspNet.Buffering.Tests
Assert.False(context.Response.Body.CanSeek);
});
});
var server = new TestServer(builder);
var response = await server.CreateClient().GetAsync("");
response.EnsureSuccessStatusCode();

View File

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

View File

@ -4,6 +4,7 @@
using System.Net.Http;
using System.Threading.Tasks;
using Microsoft.AspNet.Builder;
using Microsoft.AspNet.Hosting;
using Microsoft.AspNet.TestHost;
using Xunit;
@ -16,7 +17,8 @@ namespace Microsoft.AspNet.HttpOverrides
{
var assertsExecuted = false;
var server = TestServer.Create(app =>
var builder = new WebApplicationBuilder()
.Configure(app =>
{
app.UseOverrideHeaders(options =>
{
@ -29,6 +31,7 @@ namespace Microsoft.AspNet.HttpOverrides
return Task.FromResult(0);
});
});
var server = new TestServer(builder);
var req = new HttpRequestMessage(HttpMethod.Get, "");
req.Headers.Add("X-Forwarded-For", "11.111.111.11");
@ -41,7 +44,8 @@ namespace Microsoft.AspNet.HttpOverrides
{
var assertsExecuted = false;
var server = TestServer.Create(app =>
var builder = new WebApplicationBuilder()
.Configure(app =>
{
app.UseOverrideHeaders(options =>
{
@ -54,6 +58,7 @@ namespace Microsoft.AspNet.HttpOverrides
return Task.FromResult(0);
});
});
var server = new TestServer(builder);
var req = new HttpRequestMessage(HttpMethod.Get, "");
req.Headers.Add("X-Forwarded-For", "BAD-IP");
@ -66,7 +71,8 @@ namespace Microsoft.AspNet.HttpOverrides
{
var assertsExecuted = false;
var server = TestServer.Create(app =>
var builder = new WebApplicationBuilder()
.Configure(app =>
{
app.UseOverrideHeaders(options =>
{
@ -79,6 +85,7 @@ namespace Microsoft.AspNet.HttpOverrides
return Task.FromResult(0);
});
});
var server = new TestServer(builder);
var req = new HttpRequestMessage(HttpMethod.Get, "");
req.Headers.Add("X-Forwarded-Host", "testhost");
@ -91,7 +98,8 @@ namespace Microsoft.AspNet.HttpOverrides
{
var assertsExecuted = false;
var server = TestServer.Create(app =>
var builder = new WebApplicationBuilder()
.Configure(app =>
{
app.UseOverrideHeaders(options =>
{
@ -104,6 +112,7 @@ namespace Microsoft.AspNet.HttpOverrides
return Task.FromResult(0);
});
});
var server = new TestServer(builder);
var req = new HttpRequestMessage(HttpMethod.Get, "");
req.Headers.Add("X-Forwarded-Proto", "TestProtocol");
@ -123,7 +132,8 @@ namespace Microsoft.AspNet.HttpOverrides
{
var assertsExecuted = false;
var server = TestServer.Create(app =>
var builder = new WebApplicationBuilder()
.Configure(app =>
{
app.UseOverrideHeaders(options =>
{
@ -138,6 +148,7 @@ namespace Microsoft.AspNet.HttpOverrides
return Task.FromResult(0);
});
});
var server = new TestServer(builder);
var req = new HttpRequestMessage(HttpMethod.Get, "");
req.Headers.Add("X-Forwarded-For", "11.111.111.11");
@ -152,7 +163,8 @@ namespace Microsoft.AspNet.HttpOverrides
{
var assertsExecuted = false;
var server = TestServer.Create(app =>
var builder = new WebApplicationBuilder()
.Configure(app =>
{
app.UseOverrideHeaders(options =>
{
@ -167,6 +179,7 @@ namespace Microsoft.AspNet.HttpOverrides
return Task.FromResult(0);
});
});
var server = new TestServer(builder);
var req = new HttpRequestMessage(HttpMethod.Get, "");
req.Headers.Add("X-Forwarded-For", "11.111.111.11");
@ -181,7 +194,8 @@ namespace Microsoft.AspNet.HttpOverrides
{
var assertsExecuted = false;
var server = TestServer.Create(app =>
var builder = new WebApplicationBuilder()
.Configure(app =>
{
app.UseOverrideHeaders(options =>
{
@ -197,6 +211,7 @@ namespace Microsoft.AspNet.HttpOverrides
});
});
var server = new TestServer(builder);
var req = new HttpRequestMessage(HttpMethod.Get, "");
req.Headers.Add("X-Forwarded-For", "11.111.111.11");