示例#1
0
    static async Task StandardRequestHandlerAsync(HttpContext context, HttpResultStandardRequestAsyncCallback callback)
    {
        var box = new HttpEasyContextBox(context);

        try
        {
            await using (HttpResult result = await callback(box.Method, box.PathAndQueryStringUri.LocalPath, box.QueryStringList, context, box.RouteData, box.LocalEndpoint, box.RemoteEndpoint, box.Cancel))
            {
                await box.Response._SendHttpResultAsync(result, box.Cancel);
            }
        }
        catch (Exception ex)
        {
            ex._Error();

            await using HttpResult errResult = new HttpStringResult("Error: " + ex.Message, statusCode: Consts.HttpStatusCodes.InternalServerError);

            await box.Response._SendHttpResultAsync(errResult, box.Cancel);
        }
    }
示例#2
0
        static async Task StandardRequestHandlerAsync(HttpRequest request, HttpResponse response, RouteData routeData, HttpResultStandardRequestAsyncCallback callback)
        {
            WebMethods method = request.Method._ParseEnum(WebMethods.GET);

            CancellationToken cancel = request._GetRequestCancellationToken();

            ConnectionInfo connInfo = request.HttpContext.Connection;

            IPEndPoint remote = new IPEndPoint(connInfo.RemoteIpAddress._UnmapIPv4(), connInfo.RemotePort);
            IPEndPoint local  = new IPEndPoint(connInfo.LocalIpAddress._UnmapIPv4(), connInfo.LocalPort);

            string pathAndQueryString = request._GetRequestPathAndQueryString();

            pathAndQueryString._ParseUrl(out Uri uri, out QueryStringList qs);

            try
            {
                using (HttpResult result = await callback(method, uri.LocalPath, qs, routeData, local, remote, cancel))
                {
                    await response._SendHttpResultAsync(result, cancel);
                }
            }
            catch (Exception ex)
            {
                ex._Error();

                HttpResult errResult = new HttpStringResult("Error: " + ex.Message, statusCode: Consts.HttpStatusCodes.InternalServerError);

                await response._SendHttpResultAsync(errResult, cancel);
            }
        }
示例#3
0
 public static RequestDelegate GetStandardRequestHandler(HttpResultStandardRequestAsyncCallback handler)
 {
     return((context) => StandardRequestHandlerAsync(context.Request, context.Response, context.GetRouteData(), handler));
 }
示例#4
0
 public static RequestDelegate GetStandardRequestHandler(HttpResultStandardRequestAsyncCallback handler)
 {
     return((context) => StandardRequestHandlerAsync(context, handler));
 }
 public static void _MapPostStandardHandler(this RouteBuilder routeBuilder, string template, HttpResultStandardRequestAsyncCallback handler)
 {
     routeBuilder.MapPost(template, HttpResult.GetStandardRequestHandler(handler));
 }