コード例 #1
0
        private async Task HandleRequest(HttpContext context, PathString subPath)
        {
            context.Response.ContentType = "application/json; charset=utf-8";
            // token 检查
            if (!await ValidToken(context))
            {
                context.Response.StatusCode = StatusCodes.Status401Unauthorized;
                await context.Response.WriteAsync(ReturnT.Failed("401 Unauthorized").SerializeObject());

                return;
            }

            context.Response.StatusCode = StatusCodes.Status200OK;
            var subUrl = subPath.Value.EnsureStartSlash();
            var route  = _routeTable.FindByPattern(subUrl);

            if (route != null)
            {
                var controller = context.RequestServices.GetRequiredService(route.TypeController) as IJobController;
                if (controller != null)
                {
                    try
                    {
                        var response = await controller.ActionAsync(context);

                        if (response != null)
                        {
                            await context.Response.WriteAsync(response.ExecuteResult(context), Encoding.UTF8);

                            return;
                        }
                    }
                    catch (Exception e)
                    {
                        _logger.LogError(e, "请求异常");
                        await context.Response.WriteAsync(ReturnT.Failed("请求异常").SerializeObject());

                        return;
                    }
                }
            }

            context.Response.StatusCode = StatusCodes.Status404NotFound;
            await context.Response.WriteAsync(ReturnT.Failed("404 NotFound").SerializeObject());
        }