コード例 #1
0
        private CircuitHost GetOrCreateCircuitHost(HttpContext context, PrerenderingCancellationStatus cancellationStatus)
        {
            if (context.Items.TryGetValue(CircuitHostKey, out var existingHost))
            {
                return((CircuitHost)existingHost);
            }
            else
            {
                var result = _circuitFactory.CreateCircuitHost(
                    context,
                    client: new CircuitClientProxy(), // This creates an "offline" client.
                    GetFullUri(context.Request),
                    GetFullBaseUri(context.Request));

                result.UnhandledException += CircuitHost_UnhandledException;
                context.Response.OnCompleted(() =>
                {
                    result.UnhandledException -= CircuitHost_UnhandledException;
                    if (!cancellationStatus.Canceled)
                    {
                        _registry.RegisterDisconnectedCircuit(result);
                    }

                    return(Task.CompletedTask);
                });
                context.Items.Add(CircuitHostKey, result);

                return(result);
            }
        }
コード例 #2
0
 private PrerenderingCancellationStatus GetOrCreateCancellationStatus(HttpContext context)
 {
     if (context.Items.TryGetValue(CancellationStatusKey, out var existingValue))
     {
         return((PrerenderingCancellationStatus)existingValue);
     }
     else
     {
         var cancellationStatus = new PrerenderingCancellationStatus();
         context.Items[CancellationStatusKey] = cancellationStatus;
         return(cancellationStatus);
     }
 }
コード例 #3
0
 private static async Task CleanupCircuitState(HttpContext context, PrerenderingCancellationStatus cancellationStatus, CircuitHost circuitHost)
 {
     cancellationStatus.Canceled = true;
     context.Items.Remove(CircuitHostKey);
     await circuitHost.DisposeAsync();
 }