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); } }
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); } }
public static RequestDelegate GetStandardRequestHandler(HttpResultStandardRequestAsyncCallback handler) { return((context) => StandardRequestHandlerAsync(context.Request, context.Response, context.GetRouteData(), handler)); }
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)); }