public async Task Invoke(HttpContext context) { try { await _requestDelegate(context); } catch (Exception ex) { var loggerService = context.RequestServices.GetService <ILoggerServices>(); var businessException = ex is BusinessException; var response = new ResponseSimple { IsSuccess = false, Message = ex.Message }; var options = new JsonSerializerOptions { Encoder = System.Text.Encodings.Web.JavaScriptEncoder.Create(UnicodeRanges.All) }; await context.Response.WriteAsync(JsonSerializer.Serialize(response, options)); await loggerService.AddLoggerAsync(new LogDto { Action = context.Request.RouteValues["action"].ToString(), Controller = context.Request.RouteValues["controller"].ToString(), ExceptionMessage = ex.Message, Track = ex.StackTrace, LogLevelEnum = businessException ? Domain.ValueObject.LogLevel.Error : Domain.ValueObject.LogLevel.Exception, AddTime = DateTime.Now.ToString(CultureInfo.CurrentCulture), UserId = 0 }); } }
//private readonly ILogger _logger = LoggerManager.CreateLogger(MethodBase.GetCurrentMethod().DeclaringType); /// <summary> /// An IResponseFormatter that performs some rudimentary unwrapping of known FailureContent structures to return only the error text. /// Once we get a little more control over return values on errors, this class can be a lot smarter. /// </summary> /// <remarks>In time, clients are meant to use their own implementation of IResponseFormatter with localization etc. instead of this</remarks> /// <param name="response"></param> /// <returns>Human readable parts of the response's FailureContent</returns> public string FormatResponse(ResponseSimple response) { if (response.IsSuccess) { return(string.Empty); } try { //ErrorResponse is for errors returned var errorResponse = response.FailureContent.TryParseJson <ErrorResponse>(); //if (errorResponse?.Errors != null && errorResponse.Errors.Any()) //{ // var formattedResponse = errorResponse.Errors.Select(FormatSingleFailure).Aggregate((cu, nx) => $"{cu}, {nx}"); // return formattedResponse; //} } catch (Exception e) { // Suppress exceptions - if we somehow fail formatting we just fallback to the raw value //_logger.LogWarning("FormatResponse failed", e); } //Fallback, just return it raw return(response.FailureContent); }
public async Task <IActionResult> CheckPasswordAsync(String param) { #region 参数验证 Check.IfNullOrZero(param); #endregion var userContext = await GetUserContextAsync(); var result = await _userServices.CheckPasswordAsync(userContext.Id, param); var response = new ResponseSimple(); if (!result) { response.Model = "y"; response.IsSuccess = true; response.Message = ""; } else { response.Model = "n"; response.IsSuccess = false; response.Message = "原始密码错误"; } return(Json(response)); }
public async Task <IActionResult> UnlockScreenAsync(String unlockPassword) { #region 参数验证 Check.IfNullOrZero(unlockPassword); #endregion var userContext = await GetUserContextAsync(); var response = new ResponseSimple(); var result = await _userServices.UnlockScreenAsync(userContext.Id, unlockPassword); if (result) { response.Message = "屏幕解锁成功"; response.IsSuccess = true; } return(Json(response)); }
public async Task <IActionResult> CheckRoleIdentityAsync(String param) { Check.IfNullOrZero(param); var result = await _securityServices.CheckRoleIdentityAsync(param); var response = new ResponseSimple(); if (!result) { response.Model = "y"; response.IsSuccess = true; response.Message = ""; } else { response.Model = "n"; response.IsSuccess = false; response.Message = "角色标识已存在"; } return(Json(response)); }
public async Task <IActionResult> ReadNotifyAsync(String notifyId) { #region 参数验证 Check.IfNullOrZero(notifyId, true); #endregion var response = new ResponseSimple(); if (String.IsNullOrEmpty(notifyId)) { response.IsSuccess = false; response.Message = "消息读取失败"; return(Json(response)); } await _deskServices.ReadNotify(notifyId.Split(new[] { "," }, StringSplitOptions.RemoveEmptyEntries).Select(Int32.Parse).ToList()); response.IsSuccess = true; response.Message = "消息读取成功"; return(Json(response)); }
public async Task <IActionResult> AddAppToRoleAsync(IFormCollection forms) { #region 参数验证 Check.IfNullOrZero(forms); #endregion var response = new ResponseSimple(); var powerIds = forms["val_apps_id"].ToString().Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries).Select(Int32.Parse).ToArray(); if (powerIds.Any()) { await _securityServices.AddPowerToCurrentRoleAsync(Int32.Parse(forms["val_roleId"]), powerIds); response.IsSuccess = true; response.Message = "将权限附加到角色中成功"; } else { response.Message = "一个角色至少拥有一个app"; } return(Json(response)); }
public async Task <IActionResult> CheckNameAsync(String param) { #region 参数验证 Check.IfNullOrZero(param); #endregion var result = await _deskServices.CheckMemberNameAsync(param); var response = new ResponseSimple(); if (!result) { response.Model = "y"; response.IsSuccess = true; response.Message = ""; } else { response.Model = "n"; response.IsSuccess = false; response.Message = "应用名称已存在"; } return(Json(response)); }
public async System.Threading.Tasks.Task <ActionResult> UploadBikeImage(HttpPostedFileBase file) { DateTime dtNow = DateTime.Now; // 객체 초기화 ResponseSimple rs = new ResponseSimple(); HKRheader rHeader = new HKRheader(); LOG newLog = new LOG(); // 로그 객체 // DB Context 가져오기 LOGDBDataContext logdb = new LOGDBDataContext(/**/); // Log 처리 루틴 ------------------------------------------------- newLog.action = "UploadBikeImage: ";// + fileName; newLog.auth_token = ""; newLog.json = ""; newLog.dt_created = dtNow; // Log 처리 루틴 ------------------------------------------------- try { long len = Request.InputStream.Length; AppendLog("Request.InputStream.Length: " + len); var streamContent = new StreamContent(Request.InputStream); AppendLog("A"); streamContent.Headers.ContentType = MediaTypeHeaderValue.Parse(Request.ContentType); var provider = await streamContent.ReadAsMultipartAsync(); AppendLog("provider.Contents: " + provider.Contents.Count); foreach (var httpContent in provider.Contents) { var fileName = httpContent.Headers.ContentDisposition.FileName; AppendLog(fileName + ": " + httpContent.Headers.ContentType + "," + httpContent.Headers.ContentLength); if (string.IsNullOrWhiteSpace(fileName)) { continue; } using (Stream fileContents = await httpContent.ReadAsStreamAsync()) { var filePath = "D:\\Images\\" + fileName; filePath = filePath.Replace("\"", ""); AppendLog("filePath: " + filePath); if (System.IO.File.Exists(filePath)) { System.IO.File.Delete(filePath); } using (var fileStream = new FileStream(filePath, FileMode.Create, FileAccess.Write)) { fileContents.CopyTo(fileStream); } } } rs.header = rHeader; logdb.LOGs.InsertOnSubmit(newLog); return(Json(rs, JsonRequestBehavior.AllowGet)); } catch (Exception ex) { AppendLog("Error: " + ex.Message); // Error: Exception rs.header = setHKRheader_Err(rHeader, 301, "[ERROR] Exception: " + ex.Message , "", logdb, newLog); return(Json(rs, JsonRequestBehavior.AllowGet)); } }