コード例 #1
0
        public async Task Invoke(HttpContext httpContext)
        {
            if (httpContext == null)
            {
                throw new ArgumentNullException(nameof(httpContext));
            }

            if (!CheckMethod(httpContext.Request.Method, out var serveContent))
            {
                httpContext.Response.StatusCode = (int)HttpStatusCode.NotImplemented;
                return;
            }

            try
            {
                if (await _fileServer.TryServeFile(httpContext, serveContent, httpContext.RequestAborted).ConfigureAwait(false))
                {
                    return;
                }
            }
            catch (OperationCanceledException)
            {
                httpContext.Response.StatusCode = (int)HttpStatusCode.RequestTimeout;
                return;
            }

            await _next.Invoke(httpContext).ConfigureAwait(false);
        }
コード例 #2
0
    public async Task InvokeAsync(HttpContext context, RequestDelegate next)
    {
        try
        {
            if (await _fileServer.TryServeFile(context, CancellationToken.None))
            {
                return;
            }
        }
        catch (OperationCanceledException)
        {
            if (context.Response.HasStarted)
            {
                context.Abort();
            }
            else
            {
                context.Response.StatusCode = StatusCodes.Status408RequestTimeout;
            }

            return;
        }

        await next.Invoke(context);
    }