private static async Task TestCookies() { var serverHandler = new RequestDelegate(async context => { int?value = context.Session.GetInt32("Key"); if (context.Request.Path == new PathString("/first")) { Console.WriteLine("value.HasValue : " + value.HasValue); value = 0; } Console.WriteLine("value.HasValue " + value.HasValue); context.Session.SetInt32("Key", value.Value + 1); await context.Response.WriteAsync(value.Value.ToString()); }); var clientHandler = new ResponseDelegate(async uri => { HttpClient client = new HttpClient(); client.BaseAddress = new Uri(uri); var response = await client.GetAsync("first"); response.EnsureSuccessStatusCode(); Console.WriteLine("Server result : " + await response.Content.ReadAsStringAsync()); client = new HttpClient(); client.BaseAddress = new Uri(uri); var cookie = SetCookieHeaderValue.ParseList(response.Headers.GetValues("Set-Cookie").ToList()).First(); client.DefaultRequestHeaders.Add("Cookie", new CookieHeaderValue(cookie.Name, cookie.Value).ToString()); Console.WriteLine("Server result : " + await client.GetStringAsync("/")); Console.WriteLine("Server result : " + await client.GetStringAsync("/")); Console.WriteLine("Server result : " + await client.GetStringAsync("/")); }); await TestKestrelHttpServer.LaunchKestrellAsync(serverHandler, clientHandler); }
/// <summary> /// Test syncking through Kestrell server /// </summary> private static async Task TestSyncThroughKestrellAsync() { var id = Guid.NewGuid(); ConfigurationBuilder configurationBuilder = new ConfigurationBuilder(); configurationBuilder.AddJsonFile("config.json", true); IConfiguration Configuration = configurationBuilder.Build(); var serverConfig = Configuration["AppConfiguration:ServerConnectionString"]; var clientConfig = Configuration["AppConfiguration:ClientConnectionString"]; // Server side var serverHandler = new RequestDelegate(async context => { // Create the internal provider SqlSyncProvider serverProvider = new SqlSyncProvider(serverConfig); // Create the configuration stuff ServiceConfiguration configuration = new ServiceConfiguration(new string[] { "ServiceTickets" }); configuration.DownloadBatchSizeInKB = 500; serverProvider.SetConfiguration(configuration); // Create the proxy provider WebProxyServerProvider proxyServerProvider = new WebProxyServerProvider(serverProvider, SerializationFormat.Json); serverProvider.SyncProgress += ServerProvider_SyncProgress; try { CancellationTokenSource cts = new CancellationTokenSource(); // cts.CancelAfter(60000); CancellationToken token = cts.Token; await proxyServerProvider.HandleRequestAsync(context, token); } catch (WebSyncException webSyncException) { Console.WriteLine("Proxy Server WebSyncException : " + webSyncException.Message); } catch (Exception e) { Console.WriteLine("Proxy Server Exception : " + e.Message); throw e; } }); var clientHandler = new ResponseDelegate(async(serviceUri) => { var proxyProvider = new WebProxyClientProvider(new Uri(serviceUri), SerializationFormat.Json); var clientProvider = new SqlSyncProvider(clientConfig); SyncAgent agent = new SyncAgent(clientProvider, proxyProvider); agent.SyncProgress += Agent_SyncProgress; do { try { CancellationTokenSource cts = new CancellationTokenSource(); //cts.CancelAfter(1000); CancellationToken token = cts.Token; var s = await agent.SynchronizeAsync(token); } catch (WebSyncException webSyncException) { Console.WriteLine("Proxy Client WebSyncException : " + webSyncException.Message); } catch (Exception e) { Console.WriteLine("Proxy Client Exception : " + e.Message); } Console.WriteLine("Sync Ended. Press a key to start again, or Escapte to end"); } while (Console.ReadKey().Key != ConsoleKey.Escape); }); await TestKestrelHttpServer.LaunchKestrellAsync(serverHandler, clientHandler); }