Reacting to new Hosting API
This commit is contained in:
parent
09278f7013
commit
257c1786b3
|
|
@ -3,6 +3,7 @@
|
||||||
|
|
||||||
using System;
|
using System;
|
||||||
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;
|
||||||
using Microsoft.Extensions.Logging;
|
using Microsoft.Extensions.Logging;
|
||||||
|
|
@ -74,5 +75,15 @@ namespace SessionSample
|
||||||
await context.Response.WriteAsync("</body></html>");
|
await context.Response.WriteAsync("</body></html>");
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void Main(string[] args)
|
||||||
|
{
|
||||||
|
var application = new WebApplicationBuilder()
|
||||||
|
.UseConfiguration(WebApplicationConfiguration.GetDefault(args))
|
||||||
|
.UseStartup<Startup>()
|
||||||
|
.Build();
|
||||||
|
|
||||||
|
application.Run();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -0,0 +1,3 @@
|
||||||
|
{
|
||||||
|
"server": "Microsoft.AspNet.Server.Kestrel"
|
||||||
|
}
|
||||||
|
|
@ -1,19 +1,20 @@
|
||||||
{
|
{
|
||||||
"commands": {
|
"compilationOptions": {
|
||||||
"web": "Microsoft.AspNet.Hosting server=Microsoft.AspNet.Server.WebListener server.urls=http://localhost:5001"
|
"emitEntryPoint": true
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"commands": {
|
||||||
"Microsoft.AspNet.Server.IIS": "1.0.0-*",
|
"web": "SessionSample"
|
||||||
"Microsoft.AspNet.Server.WebListener": "1.0.0-*",
|
},
|
||||||
"Microsoft.AspNet.Session": "1.0.0-*",
|
"dependencies": {
|
||||||
"Microsoft.Extensions.Caching.Memory": "1.0.0-*",
|
"Microsoft.AspNet.Server.Kestrel": "1.0.0-*",
|
||||||
"Microsoft.Extensions.Caching.Redis": "1.0.0-*",
|
"Microsoft.AspNet.Session": "1.0.0-*",
|
||||||
"Microsoft.Extensions.Caching.SqlServer": "1.0.0-*",
|
"Microsoft.Extensions.Caching.Memory": "1.0.0-*",
|
||||||
"Microsoft.Extensions.Logging.Console": "1.0.0-*"
|
"Microsoft.Extensions.Caching.Redis": "1.0.0-*",
|
||||||
},
|
"Microsoft.Extensions.Caching.SqlServer": "1.0.0-*",
|
||||||
"exclude": "wwwroot/**/*.*",
|
"Microsoft.Extensions.Logging.Console": "1.0.0-*"
|
||||||
"frameworks": {
|
},
|
||||||
"dnx451": { }
|
"exclude": "wwwroot/**/*.*",
|
||||||
},
|
"frameworks": {
|
||||||
"webroot": "wwwroot"
|
"dnx451": { }
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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>
|
||||||
|
|
@ -4,10 +4,10 @@
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Net;
|
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
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;
|
||||||
|
|
@ -27,21 +27,24 @@ namespace Microsoft.AspNet.Session
|
||||||
[Fact]
|
[Fact]
|
||||||
public async Task ReadingEmptySessionDoesNotCreateCookie()
|
public async Task ReadingEmptySessionDoesNotCreateCookie()
|
||||||
{
|
{
|
||||||
using (var server = TestServer.Create(app =>
|
var builder = new WebApplicationBuilder()
|
||||||
{
|
.Configure(app =>
|
||||||
app.UseSession();
|
|
||||||
|
|
||||||
app.Run(context =>
|
|
||||||
{
|
{
|
||||||
Assert.Null(context.Session.GetString("NotFound"));
|
app.UseSession();
|
||||||
return Task.FromResult(0);
|
|
||||||
|
app.Run(context =>
|
||||||
|
{
|
||||||
|
Assert.Null(context.Session.GetString("NotFound"));
|
||||||
|
return Task.FromResult(0);
|
||||||
|
});
|
||||||
|
})
|
||||||
|
.ConfigureServices(services =>
|
||||||
|
{
|
||||||
|
services.AddCaching();
|
||||||
|
services.AddSession();
|
||||||
});
|
});
|
||||||
},
|
|
||||||
services =>
|
using (var server = new TestServer(builder))
|
||||||
{
|
|
||||||
services.AddCaching();
|
|
||||||
services.AddSession();
|
|
||||||
}))
|
|
||||||
{
|
{
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
var response = await client.GetAsync(string.Empty);
|
var response = await client.GetAsync(string.Empty);
|
||||||
|
|
@ -54,22 +57,25 @@ namespace Microsoft.AspNet.Session
|
||||||
[Fact]
|
[Fact]
|
||||||
public async Task SettingAValueCausesTheCookieToBeCreated()
|
public async Task SettingAValueCausesTheCookieToBeCreated()
|
||||||
{
|
{
|
||||||
using (var server = TestServer.Create(app =>
|
var builder = new WebApplicationBuilder()
|
||||||
{
|
.Configure(app =>
|
||||||
app.UseSession();
|
|
||||||
app.Run(context =>
|
|
||||||
{
|
{
|
||||||
Assert.Null(context.Session.GetString("Key"));
|
app.UseSession();
|
||||||
context.Session.SetString("Key", "Value");
|
app.Run(context =>
|
||||||
Assert.Equal("Value", context.Session.GetString("Key"));
|
{
|
||||||
return Task.FromResult(0);
|
Assert.Null(context.Session.GetString("Key"));
|
||||||
|
context.Session.SetString("Key", "Value");
|
||||||
|
Assert.Equal("Value", context.Session.GetString("Key"));
|
||||||
|
return Task.FromResult(0);
|
||||||
|
});
|
||||||
|
})
|
||||||
|
.ConfigureServices(services =>
|
||||||
|
{
|
||||||
|
services.AddCaching();
|
||||||
|
services.AddSession();
|
||||||
});
|
});
|
||||||
},
|
|
||||||
services =>
|
using (var server = new TestServer(builder))
|
||||||
{
|
|
||||||
services.AddCaching();
|
|
||||||
services.AddSession();
|
|
||||||
}))
|
|
||||||
{
|
{
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
var response = await client.GetAsync(string.Empty);
|
var response = await client.GetAsync(string.Empty);
|
||||||
|
|
@ -84,27 +90,30 @@ namespace Microsoft.AspNet.Session
|
||||||
[Fact]
|
[Fact]
|
||||||
public async Task SessionCanBeAccessedOnTheNextRequest()
|
public async Task SessionCanBeAccessedOnTheNextRequest()
|
||||||
{
|
{
|
||||||
using (var server = TestServer.Create(app =>
|
var builder = new WebApplicationBuilder()
|
||||||
{
|
.Configure(app =>
|
||||||
app.UseSession();
|
|
||||||
app.Run(context =>
|
|
||||||
{
|
{
|
||||||
int? value = context.Session.GetInt32("Key");
|
app.UseSession();
|
||||||
if (context.Request.Path == new PathString("/first"))
|
app.Run(context =>
|
||||||
{
|
{
|
||||||
Assert.False(value.HasValue);
|
int? value = context.Session.GetInt32("Key");
|
||||||
value = 0;
|
if (context.Request.Path == new PathString("/first"))
|
||||||
}
|
{
|
||||||
Assert.True(value.HasValue);
|
Assert.False(value.HasValue);
|
||||||
context.Session.SetInt32("Key", value.Value + 1);
|
value = 0;
|
||||||
return context.Response.WriteAsync(value.Value.ToString());
|
}
|
||||||
|
Assert.True(value.HasValue);
|
||||||
|
context.Session.SetInt32("Key", value.Value + 1);
|
||||||
|
return context.Response.WriteAsync(value.Value.ToString());
|
||||||
|
});
|
||||||
|
})
|
||||||
|
.ConfigureServices(services =>
|
||||||
|
{
|
||||||
|
services.AddCaching();
|
||||||
|
services.AddSession();
|
||||||
});
|
});
|
||||||
},
|
|
||||||
services =>
|
using (var server = new TestServer(builder))
|
||||||
{
|
|
||||||
services.AddCaching();
|
|
||||||
services.AddSession();
|
|
||||||
}))
|
|
||||||
{
|
{
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
var response = await client.GetAsync("first");
|
var response = await client.GetAsync("first");
|
||||||
|
|
@ -123,37 +132,41 @@ namespace Microsoft.AspNet.Session
|
||||||
[Fact]
|
[Fact]
|
||||||
public async Task RemovedItemCannotBeAccessedAgain()
|
public async Task RemovedItemCannotBeAccessedAgain()
|
||||||
{
|
{
|
||||||
using (var server = TestServer.Create(app =>
|
var builder = new WebApplicationBuilder()
|
||||||
{
|
.Configure(app =>
|
||||||
app.UseSession();
|
|
||||||
app.Run(context =>
|
|
||||||
{
|
{
|
||||||
int? value = context.Session.GetInt32("Key");
|
app.UseSession();
|
||||||
if (context.Request.Path == new PathString("/first"))
|
app.Run(context =>
|
||||||
{
|
{
|
||||||
Assert.False(value.HasValue);
|
int? value = context.Session.GetInt32("Key");
|
||||||
value = 0;
|
if (context.Request.Path == new PathString("/first"))
|
||||||
context.Session.SetInt32("Key", 1);
|
{
|
||||||
}
|
Assert.False(value.HasValue);
|
||||||
else if (context.Request.Path == new PathString("/second"))
|
value = 0;
|
||||||
{
|
context.Session.SetInt32("Key", 1);
|
||||||
Assert.True(value.HasValue);
|
}
|
||||||
Assert.Equal(1, value);
|
else if (context.Request.Path == new PathString("/second"))
|
||||||
context.Session.Remove("Key");
|
{
|
||||||
}
|
Assert.True(value.HasValue);
|
||||||
else if (context.Request.Path == new PathString("/third"))
|
Assert.Equal(1, value);
|
||||||
{
|
context.Session.Remove("Key");
|
||||||
Assert.False(value.HasValue);
|
}
|
||||||
value = 2;
|
else if (context.Request.Path == new PathString("/third"))
|
||||||
}
|
{
|
||||||
return context.Response.WriteAsync(value.Value.ToString());
|
Assert.False(value.HasValue);
|
||||||
|
value = 2;
|
||||||
|
}
|
||||||
|
return context.Response.WriteAsync(value.Value.ToString());
|
||||||
|
});
|
||||||
|
})
|
||||||
|
.ConfigureServices(
|
||||||
|
services =>
|
||||||
|
{
|
||||||
|
services.AddCaching();
|
||||||
|
services.AddSession();
|
||||||
});
|
});
|
||||||
},
|
|
||||||
services =>
|
using (var server = new TestServer(builder))
|
||||||
{
|
|
||||||
services.AddCaching();
|
|
||||||
services.AddSession();
|
|
||||||
}))
|
|
||||||
{
|
{
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
var response = await client.GetAsync("first");
|
var response = await client.GetAsync("first");
|
||||||
|
|
@ -171,37 +184,40 @@ namespace Microsoft.AspNet.Session
|
||||||
[Fact]
|
[Fact]
|
||||||
public async Task ClearedItemsCannotBeAccessedAgain()
|
public async Task ClearedItemsCannotBeAccessedAgain()
|
||||||
{
|
{
|
||||||
using (var server = TestServer.Create(app =>
|
var builder = new WebApplicationBuilder()
|
||||||
{
|
.Configure(app =>
|
||||||
app.UseSession();
|
|
||||||
app.Run(context =>
|
|
||||||
{
|
{
|
||||||
int? value = context.Session.GetInt32("Key");
|
app.UseSession();
|
||||||
if (context.Request.Path == new PathString("/first"))
|
app.Run(context =>
|
||||||
{
|
{
|
||||||
Assert.False(value.HasValue);
|
int? value = context.Session.GetInt32("Key");
|
||||||
value = 0;
|
if (context.Request.Path == new PathString("/first"))
|
||||||
context.Session.SetInt32("Key", 1);
|
{
|
||||||
}
|
Assert.False(value.HasValue);
|
||||||
else if (context.Request.Path == new PathString("/second"))
|
value = 0;
|
||||||
{
|
context.Session.SetInt32("Key", 1);
|
||||||
Assert.True(value.HasValue);
|
}
|
||||||
Assert.Equal(1, value);
|
else if (context.Request.Path == new PathString("/second"))
|
||||||
context.Session.Clear();
|
{
|
||||||
}
|
Assert.True(value.HasValue);
|
||||||
else if (context.Request.Path == new PathString("/third"))
|
Assert.Equal(1, value);
|
||||||
{
|
context.Session.Clear();
|
||||||
Assert.False(value.HasValue);
|
}
|
||||||
value = 2;
|
else if (context.Request.Path == new PathString("/third"))
|
||||||
}
|
{
|
||||||
return context.Response.WriteAsync(value.Value.ToString());
|
Assert.False(value.HasValue);
|
||||||
|
value = 2;
|
||||||
|
}
|
||||||
|
return context.Response.WriteAsync(value.Value.ToString());
|
||||||
|
});
|
||||||
|
})
|
||||||
|
.ConfigureServices(services =>
|
||||||
|
{
|
||||||
|
services.AddCaching();
|
||||||
|
services.AddSession();
|
||||||
});
|
});
|
||||||
},
|
|
||||||
services =>
|
using (var server = new TestServer(builder))
|
||||||
{
|
|
||||||
services.AddCaching();
|
|
||||||
services.AddSession();
|
|
||||||
}))
|
|
||||||
{
|
{
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
var response = await client.GetAsync("first");
|
var response = await client.GetAsync("first");
|
||||||
|
|
@ -221,21 +237,24 @@ namespace Microsoft.AspNet.Session
|
||||||
{
|
{
|
||||||
var sink = new TestSink();
|
var sink = new TestSink();
|
||||||
var loggerFactory = new TestLoggerFactory(sink, enabled: true);
|
var loggerFactory = new TestLoggerFactory(sink, enabled: true);
|
||||||
using (var server = TestServer.Create(app =>
|
var builder = new WebApplicationBuilder()
|
||||||
{
|
.Configure(app =>
|
||||||
app.UseSession();
|
|
||||||
app.Run(context =>
|
|
||||||
{
|
{
|
||||||
context.Session.SetString("Key", "Value");
|
app.UseSession();
|
||||||
return Task.FromResult(0);
|
app.Run(context =>
|
||||||
|
{
|
||||||
|
context.Session.SetString("Key", "Value");
|
||||||
|
return Task.FromResult(0);
|
||||||
|
});
|
||||||
|
})
|
||||||
|
.ConfigureServices(services =>
|
||||||
|
{
|
||||||
|
services.AddSingleton(typeof(ILoggerFactory), loggerFactory);
|
||||||
|
services.AddCaching();
|
||||||
|
services.AddSession();
|
||||||
});
|
});
|
||||||
},
|
|
||||||
services =>
|
using (var server = new TestServer(builder))
|
||||||
{
|
|
||||||
services.AddSingleton(typeof(ILoggerFactory), loggerFactory);
|
|
||||||
services.AddCaching();
|
|
||||||
services.AddSession();
|
|
||||||
}))
|
|
||||||
{
|
{
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
var response = await client.GetAsync(string.Empty);
|
var response = await client.GetAsync(string.Empty);
|
||||||
|
|
@ -254,32 +273,35 @@ namespace Microsoft.AspNet.Session
|
||||||
{
|
{
|
||||||
var sink = new TestSink();
|
var sink = new TestSink();
|
||||||
var loggerFactory = new TestLoggerFactory(sink, enabled: true);
|
var loggerFactory = new TestLoggerFactory(sink, enabled: true);
|
||||||
using (var server = TestServer.Create(app =>
|
var builder = new WebApplicationBuilder()
|
||||||
{
|
.Configure(app =>
|
||||||
app.UseSession();
|
|
||||||
app.Run(context =>
|
|
||||||
{
|
{
|
||||||
int? value = context.Session.GetInt32("Key");
|
app.UseSession();
|
||||||
if (context.Request.Path == new PathString("/first"))
|
app.Run(context =>
|
||||||
{
|
{
|
||||||
Assert.False(value.HasValue);
|
int? value = context.Session.GetInt32("Key");
|
||||||
value = 1;
|
if (context.Request.Path == new PathString("/first"))
|
||||||
context.Session.SetInt32("Key", 1);
|
{
|
||||||
}
|
Assert.False(value.HasValue);
|
||||||
else if (context.Request.Path == new PathString("/second"))
|
value = 1;
|
||||||
{
|
context.Session.SetInt32("Key", 1);
|
||||||
Assert.False(value.HasValue);
|
}
|
||||||
value = 2;
|
else if (context.Request.Path == new PathString("/second"))
|
||||||
}
|
{
|
||||||
return context.Response.WriteAsync(value.Value.ToString());
|
Assert.False(value.HasValue);
|
||||||
|
value = 2;
|
||||||
|
}
|
||||||
|
return context.Response.WriteAsync(value.Value.ToString());
|
||||||
|
});
|
||||||
|
})
|
||||||
|
.ConfigureServices(services =>
|
||||||
|
{
|
||||||
|
services.AddSingleton(typeof(ILoggerFactory), loggerFactory);
|
||||||
|
services.AddCaching();
|
||||||
|
services.AddSession(o => o.IdleTimeout = TimeSpan.FromMilliseconds(30));
|
||||||
});
|
});
|
||||||
},
|
|
||||||
services =>
|
using (var server = new TestServer(builder))
|
||||||
{
|
|
||||||
services.AddSingleton(typeof(ILoggerFactory), loggerFactory);
|
|
||||||
services.AddCaching();
|
|
||||||
services.AddSession(o => o.IdleTimeout = TimeSpan.FromMilliseconds(30));
|
|
||||||
}))
|
|
||||||
{
|
{
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
var response = await client.GetAsync("first");
|
var response = await client.GetAsync("first");
|
||||||
|
|
@ -305,37 +327,40 @@ namespace Microsoft.AspNet.Session
|
||||||
public async Task RefreshesSession_WhenSessionData_IsNotModified()
|
public async Task RefreshesSession_WhenSessionData_IsNotModified()
|
||||||
{
|
{
|
||||||
var clock = new TestClock();
|
var clock = new TestClock();
|
||||||
using (var server = TestServer.Create(app =>
|
var builder = new WebApplicationBuilder()
|
||||||
{
|
.Configure(app =>
|
||||||
app.UseSession();
|
|
||||||
app.Run(context =>
|
|
||||||
{
|
{
|
||||||
string responseData = string.Empty;
|
app.UseSession();
|
||||||
if (context.Request.Path == new PathString("/AddDataToSession"))
|
app.Run(context =>
|
||||||
{
|
{
|
||||||
context.Session.SetInt32("Key", 10);
|
string responseData = string.Empty;
|
||||||
responseData = "added data to session";
|
if (context.Request.Path == new PathString("/AddDataToSession"))
|
||||||
}
|
{
|
||||||
else if (context.Request.Path == new PathString("/AccessSessionData"))
|
context.Session.SetInt32("Key", 10);
|
||||||
{
|
responseData = "added data to session";
|
||||||
var value = context.Session.GetInt32("Key");
|
}
|
||||||
responseData = (value == null) ? "No value found in session." : value.ToString();
|
else if (context.Request.Path == new PathString("/AccessSessionData"))
|
||||||
}
|
{
|
||||||
else if (context.Request.Path == new PathString("/DoNotAccessSessionData"))
|
var value = context.Session.GetInt32("Key");
|
||||||
{
|
responseData = (value == null) ? "No value found in session." : value.ToString();
|
||||||
responseData = "did not access session data";
|
}
|
||||||
}
|
else if (context.Request.Path == new PathString("/DoNotAccessSessionData"))
|
||||||
|
{
|
||||||
|
responseData = "did not access session data";
|
||||||
|
}
|
||||||
|
|
||||||
return context.Response.WriteAsync(responseData);
|
return context.Response.WriteAsync(responseData);
|
||||||
|
});
|
||||||
|
})
|
||||||
|
.ConfigureServices(services =>
|
||||||
|
{
|
||||||
|
services.AddSingleton(typeof(ILoggerFactory), new NullLoggerFactory());
|
||||||
|
services.AddCaching();
|
||||||
|
services.AddSession(o => o.IdleTimeout = TimeSpan.FromMinutes(20));
|
||||||
|
services.Configure<MemoryCacheOptions>(o => o.Clock = clock);
|
||||||
});
|
});
|
||||||
},
|
|
||||||
services =>
|
using (var server = new TestServer(builder))
|
||||||
{
|
|
||||||
services.AddSingleton(typeof(ILoggerFactory), new NullLoggerFactory());
|
|
||||||
services.AddCaching();
|
|
||||||
services.AddSession(o => o.IdleTimeout = TimeSpan.FromMinutes(20));
|
|
||||||
services.Configure<MemoryCacheOptions>(o => o.Clock = clock);
|
|
||||||
}))
|
|
||||||
{
|
{
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
var response = await client.GetAsync("AddDataToSession");
|
var response = await client.GetAsync("AddDataToSession");
|
||||||
|
|
@ -360,28 +385,31 @@ namespace Microsoft.AspNet.Session
|
||||||
[Fact]
|
[Fact]
|
||||||
public async Task SessionFeature_IsUnregistered_WhenResponseGoingOut()
|
public async Task SessionFeature_IsUnregistered_WhenResponseGoingOut()
|
||||||
{
|
{
|
||||||
using (var server = TestServer.Create(app =>
|
var builder = new WebApplicationBuilder()
|
||||||
{
|
.Configure(app =>
|
||||||
app.Use(async (httpContext, next) =>
|
|
||||||
{
|
{
|
||||||
await next();
|
app.Use(async (httpContext, next) =>
|
||||||
|
{
|
||||||
|
await next();
|
||||||
|
|
||||||
Assert.Null(httpContext.Features.Get<ISessionFeature>());
|
Assert.Null(httpContext.Features.Get<ISessionFeature>());
|
||||||
|
});
|
||||||
|
|
||||||
|
app.UseSession();
|
||||||
|
|
||||||
|
app.Run(context =>
|
||||||
|
{
|
||||||
|
context.Session.SetString("key", "value");
|
||||||
|
return Task.FromResult(0);
|
||||||
|
});
|
||||||
|
})
|
||||||
|
.ConfigureServices(services =>
|
||||||
|
{
|
||||||
|
services.AddCaching();
|
||||||
|
services.AddSession();
|
||||||
});
|
});
|
||||||
|
|
||||||
app.UseSession();
|
using (var server = new TestServer(builder))
|
||||||
|
|
||||||
app.Run(context =>
|
|
||||||
{
|
|
||||||
context.Session.SetString("key", "value");
|
|
||||||
return Task.FromResult(0);
|
|
||||||
});
|
|
||||||
},
|
|
||||||
services =>
|
|
||||||
{
|
|
||||||
services.AddCaching();
|
|
||||||
services.AddSession();
|
|
||||||
}))
|
|
||||||
{
|
{
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
var response = await client.GetAsync(string.Empty);
|
var response = await client.GetAsync(string.Empty);
|
||||||
|
|
@ -392,36 +420,39 @@ namespace Microsoft.AspNet.Session
|
||||||
[Fact]
|
[Fact]
|
||||||
public async Task SessionFeature_IsUnregistered_WhenResponseGoingOut_AndAnUnhandledExcetionIsThrown()
|
public async Task SessionFeature_IsUnregistered_WhenResponseGoingOut_AndAnUnhandledExcetionIsThrown()
|
||||||
{
|
{
|
||||||
using (var server = TestServer.Create(app =>
|
var builder = new WebApplicationBuilder()
|
||||||
{
|
.Configure(app =>
|
||||||
app.Use(async (httpContext, next) =>
|
|
||||||
{
|
{
|
||||||
var exceptionThrown = false;
|
app.Use(async (httpContext, next) =>
|
||||||
try
|
|
||||||
{
|
{
|
||||||
await next();
|
var exceptionThrown = false;
|
||||||
}
|
try
|
||||||
catch
|
{
|
||||||
{
|
await next();
|
||||||
exceptionThrown = true;
|
}
|
||||||
}
|
catch
|
||||||
|
{
|
||||||
|
exceptionThrown = true;
|
||||||
|
}
|
||||||
|
|
||||||
Assert.True(exceptionThrown);
|
Assert.True(exceptionThrown);
|
||||||
Assert.Null(httpContext.Features.Get<ISessionFeature>());
|
Assert.Null(httpContext.Features.Get<ISessionFeature>());
|
||||||
|
});
|
||||||
|
|
||||||
|
app.UseSession();
|
||||||
|
|
||||||
|
app.Run(context =>
|
||||||
|
{
|
||||||
|
throw new InvalidOperationException("An error occurred.");
|
||||||
|
});
|
||||||
|
})
|
||||||
|
.ConfigureServices(services =>
|
||||||
|
{
|
||||||
|
services.AddCaching();
|
||||||
|
services.AddSession();
|
||||||
});
|
});
|
||||||
|
|
||||||
app.UseSession();
|
using (var server = new TestServer(builder))
|
||||||
|
|
||||||
app.Run(context =>
|
|
||||||
{
|
|
||||||
throw new InvalidOperationException("An error occurred.");
|
|
||||||
});
|
|
||||||
},
|
|
||||||
services =>
|
|
||||||
{
|
|
||||||
services.AddCaching();
|
|
||||||
services.AddSession();
|
|
||||||
}))
|
|
||||||
{
|
{
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
var response = await client.GetAsync(string.Empty);
|
var response = await client.GetAsync(string.Empty);
|
||||||
|
|
@ -434,15 +465,18 @@ namespace Microsoft.AspNet.Session
|
||||||
// Arrange, Act & Assert
|
// Arrange, Act & Assert
|
||||||
var exception = await Assert.ThrowsAsync<InvalidOperationException>(async () =>
|
var exception = await Assert.ThrowsAsync<InvalidOperationException>(async () =>
|
||||||
{
|
{
|
||||||
using (var server = TestServer.Create(app =>
|
var builder = new WebApplicationBuilder()
|
||||||
{
|
.Configure(app =>
|
||||||
app.UseSession();
|
{
|
||||||
},
|
app.UseSession();
|
||||||
services =>
|
})
|
||||||
{
|
.ConfigureServices(services =>
|
||||||
services.AddSingleton<IDistributedCache, TestDistributedCache>();
|
{
|
||||||
services.AddSession();
|
services.AddSingleton<IDistributedCache, TestDistributedCache>();
|
||||||
}))
|
services.AddSession();
|
||||||
|
});
|
||||||
|
|
||||||
|
using (var server = new TestServer(builder))
|
||||||
{
|
{
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
await client.GetAsync(string.Empty);
|
await client.GetAsync(string.Empty);
|
||||||
|
|
@ -455,23 +489,26 @@ namespace Microsoft.AspNet.Session
|
||||||
[Fact]
|
[Fact]
|
||||||
public async Task SessionKeys_AreCaseSensitive()
|
public async Task SessionKeys_AreCaseSensitive()
|
||||||
{
|
{
|
||||||
using (var server = TestServer.Create(app =>
|
var builder = new WebApplicationBuilder()
|
||||||
{
|
.Configure(app =>
|
||||||
app.UseSession();
|
|
||||||
app.Run(context =>
|
|
||||||
{
|
{
|
||||||
context.Session.SetString("KEY", "VALUE");
|
app.UseSession();
|
||||||
context.Session.SetString("key", "value");
|
app.Run(context =>
|
||||||
Assert.Equal("VALUE", context.Session.GetString("KEY"));
|
{
|
||||||
Assert.Equal("value", context.Session.GetString("key"));
|
context.Session.SetString("KEY", "VALUE");
|
||||||
return Task.FromResult(0);
|
context.Session.SetString("key", "value");
|
||||||
|
Assert.Equal("VALUE", context.Session.GetString("KEY"));
|
||||||
|
Assert.Equal("value", context.Session.GetString("key"));
|
||||||
|
return Task.FromResult(0);
|
||||||
|
});
|
||||||
|
})
|
||||||
|
.ConfigureServices(services =>
|
||||||
|
{
|
||||||
|
services.AddCaching();
|
||||||
|
services.AddSession();
|
||||||
});
|
});
|
||||||
},
|
|
||||||
services =>
|
using (var server = new TestServer(builder))
|
||||||
{
|
|
||||||
services.AddCaching();
|
|
||||||
services.AddSession();
|
|
||||||
}))
|
|
||||||
{
|
{
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
var response = await client.GetAsync(string.Empty);
|
var response = await client.GetAsync(string.Empty);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue