public void Intercept(IInvocation invocation) { var methodName = invocation.Method.Name; var lockAttributes = invocation.Method.GetCustomAttributes(typeof(LockAttribute), true) as LockAttribute[]; if (IsMarkLockLockAttribute(lockAttributes)) { var lockProviders = GetLockProviders(lockAttributes); try { foreach (var lockProvider in lockProviders) { lockProvider.AddLock(); } invocation.Proceed(); } catch (Exception e) { _log.Exception("Something wrong!", e); throw e; } finally { foreach (var lockProvider in lockProviders) { lockProvider.ReleaseLock(); } _log.Info($"{DateTime.Now:HH:mm:ss fff} {methodName} Release Lock"); } } else { invocation.Proceed(); } }
protected void Application_Error(object sender, EventArgs e) { log.Info("Application Error"); Exception exception = Server.GetLastError(); Server.ClearError(); Response.Clear(); log.Exception(exception); if (!IsAjaxRequest()) { Response.Redirect("/Views/Shared/Error.cshtml"); } else { Response.Write("Server Error, could not continue."); } }