public Task HandleExceptionAsync(HttpContext httpContext, Exception exception) { var response = httpContext.Response; response.StatusCode = (int)HttpStatusCode.InternalServerError; var err = JsonRpcError.CreateEmpty(); err.Error.Code = exception.HResult; err.Error.Message = exception.ToString(); var memoryStream = new MemoryStream(); using (var textWriter = new StreamWriter(memoryStream, Utilities.Utf8, Utilities.DefaultBufferSize, true)) { Utilities.Serializer.Serialize(textWriter, err); } memoryStream.Position = 0; response.Body = memoryStream; response.Headers[HttpHeader.ContentLength] = memoryStream.Length.ToString(CultureInfo.InvariantCulture); httpContext.CloseConnection = true; return(Task.FromResult(0)); }
protected static void ReportError([NotNull] IRpcSessionContext context, [NotNull] Exception ex, [CanBeNull] object id = null) { var err = JsonRpcError.CreateEmpty(); err.Id = id; err.Error.Code = ex.HResult; err.Error.Message = ex.Message; var response = context.Response; response.StatusCode = (int)HttpStatusCode.OK; response.SetBody(err); }