Exemple #1
0
        private void ExecuteError(Int32?httpCode, String message)
        {
            var routeData = new RouteData();

            routeData.Values.Add("controller", ErrorController.Name);
            routeData.Values.Add("action", ErrorController.ActionName_Custom);
            if (httpCode.HasValue)
            {
                routeData.Values.Add("httpCode", httpCode.Value);
            }

            try
            {
                Response.Clear();
                Server.ClearError();
                Response.ContentType            = "text/html; charset=utf-8";
                Response.TrySkipIisCustomErrors = true;

                IController errorController = new ErrorController();
                errorController.Execute(new RequestContext(new HttpContextWrapper(Context), routeData));
            }
            catch (Exception exception)
            {
                //SiteLogger.Fatal("Global.ExecuteError", exception, Context.Request.RequestContext.HttpContext);
                AppLogger.Fatal("Не предвиденная ошибка", exception);
            }
        }
Exemple #2
0
        private void App_DispatcherUnhandledException(
            object sender,
            DispatcherUnhandledExceptionEventArgs e)
        {
            try
            {
                // グローバルキーフックを解除する
                SharlayanController.UnsubscribeKeyHook();

                Config.Instance.Save();

                if (this.MainWindow != null)
                {
                    MessageBoxHelper.ShowDialogMessageWindow(
                        "RINGS - Fatal",
                        "予期しない例外を検知しました。アプリケーションを終了します。",
                        e.Exception);
                }
                else
                {
                    MessageBox.Show(
                        "予期しない例外を検知しました。アプリケーションを終了します。\n\n" +
                        e.Exception,
                        "RINGS - Fatal",
                        MessageBoxButton.OK,
                        MessageBoxImage.Error);
                }
            }
            finally
            {
                this.UnlockDuplicateStart();

                AppLogger.Fatal(
                    "Unhandled Exception. 予期しない例外を検知しました。",
                    e.Exception);

                AppLogger.Write("RINGS Abort.");
                AppLogger.Flush();
            }
        }
Exemple #3
0
        private void App_DispatcherUnhandledException(
            object sender,
            DispatcherUnhandledExceptionEventArgs e)
        {
            try
            {
                Config.Instance.Save();
                Thread.Sleep(50);

                if (this.MainWindow != null)
                {
                    MessageBoxHelper.ShowDialogMessageWindow(
                        "madoka - Fatal",
                        "予期しない例外を検知しました。アプリケーションを終了します。",
                        e.Exception);
                }
                else
                {
                    MessageBox.Show(
                        "予期しない例外を検知しました。アプリケーションを終了します。\n\n" +
                        e.Exception,
                        "madoka - Fatal",
                        MessageBoxButton.OK,
                        MessageBoxImage.Error);
                }
            }
            finally
            {
                AppLogger.Fatal(
                    "Unhandled Exception. 予期しない例外が発生しました。",
                    e.Exception);

                AppLogger.Write("madoka Abort.");
                AppLogger.Flush();
            }
        }
Exemple #4
0
        public static async Task <bool> IsUpdateAsync(
            ReleaseChannels updateChannel)
        {
            SetupSSL();

            // アップデートChannelを保存する
            LastCheckedUpdateChannel = updateChannel;

            if (string.IsNullOrEmpty(UpdateSourceUri))
            {
                return(false);
            }

            var now            = DateTimeOffset.Now;
            var targetAssembly = Assembly.GetEntryAssembly();

            try
            {
                // リリースノートを取得する
                var notes = await ReleaseNotes.DeserializeAsync(new Uri(UpdateSourceUri));

                if (notes == null)
                {
                    AppLogger.Error($"Update checker error. RELEASE_NOTES.xml not found. uri={UpdateSourceUri}");
                    return(false);
                }

                // より新しいバージョンがあるか?
                var newer = notes.GetNewerVersion(
                    targetAssembly,
                    updateChannel);
                if (newer == null)
                {
                    AppLogger.Write("Update checker. this version is up-to-date.");
                    return(false);
                }

                AppLogger.Write($"Update checker found newer version. v{newer.Version}-{newer.ReleaseChannel}");

                // アップデートWindowを表示する
                await Application.Current.Dispatcher.InvokeAsync(() =>
                {
                    UpdateCheckerView.Show(
                        notes.Name,
                        targetAssembly,
                        newer);
                });
            }
            catch (Exception ex)
            {
                AppLogger.Fatal("Update checker fatal error.", ex);
                throw;
            }
            finally
            {
                LastUpdateCheckCallback?.Invoke(now);
                AppLogger.Flush();
            }

            return(true);
        }