public static async Task Handler(HttpContext context) { context.Response.StatusCode = 500; context.Response.ContentType = "application/json"; var exceptionHandlerPathFeature = context.Features.Get <IExceptionHandlerPathFeature>(); switch (exceptionHandlerPathFeature.Error) { case null: return; case SunViewException sunViewException: await context.Response.WriteAsync(SunJson.Serialize(sunViewException.ErrorView)); break; default: ErrorView errorView = ErrorView.ServerError(exceptionHandlerPathFeature.Error); await context.Response.WriteAsync(SunJson.Serialize(errorView)); break; } }
public async Task <IActionResult> CacheContentAsync <T>( ComponentServerCached component, IEnumerable <int> categoryIds, Func <Task <T> > dataLoader, int?page = null) { if (!cachePolicy.CanCache(component, page)) { return(Json(await dataLoader())); } var key = keyGenerator.ContentGenerateKey(component.Name, categoryIds, page); string json; if (!string.IsNullOrEmpty(json = contentCache.GetContent(key))) { return(JsonString(json)); } var content = await dataLoader(); json = SunJson.Serialize(content); contentCache.CacheContent(key, json); return(JsonString(json)); }
protected async Task <IActionResult> CacheContentAsync <T>( CategoryCached category, string key, Func <Task <T> > dataLoader, int?page) { if (!cachePolicy.CanCache(category, new RequestOptions() { PageNumber = page })) { return(Json(await dataLoader())); } string json; if (!string.IsNullOrEmpty(json = contentCache.GetContent(key))) { return(JsonString(json)); } var content = await dataLoader(); json = SunJson.Serialize(content); contentCache.CacheContent(key, json); return(JsonString(json)); }
public async Task Invoke(HttpContext context) { try { await next(context); } catch (SunViewException e) { logger.LogError(e.ToString()); context.Response.StatusCode = 500; await context.Response.WriteAsync(SunJson.Serialize(e.ErrorView ?? ErrorView.ServerError())); } catch (Exception e) { logger.LogError(e.ToString()); context.Response.StatusCode = 500; ErrorView errorView = ErrorView.ServerError(e); await context.Response.WriteAsync(SunJson.Serialize(errorView)); } }
public bool CacheContent(string key, object content, out string convertedContent) { convertedContent = SunJson.Serialize(content); return(CacheContent(key, convertedContent)); }