1

Mono MVC2 アプリケーションは、ブラウザーから PostgreSql データベースをバックアップするために使用されます。

しばらくすると、作業例外 Thread was being aborted が発生します (エラーメッセージ全体は以下にあります)。pg_dump は実行されますが、中止されたようです。apache error_log には、行の途中で終わる出力が含まれています。

インターネット経由でブラウザからコピーを保存できる PostgreSql データベースからバックアップ コピーを作成する方法は?

Apache での mod_mono の使用

アンドラス。

[Authorize]
public class BackupController : ControllerBase
 {
   [AcceptVerbs(HttpVerbs.Get)]
   public ActionResult Backup()
   {
            var pinfo = new ProcessStartInfo();
            var fn = "backup.backup";
            pinfo.Arguments = " -ib -Z6 -f \"" + fn + "\" -Fc -h \"" + "myserver" + "\" -U \"" +
                "postgres" + " \"" + "mydb" + "\"";
            pinfo.FileName = "/usr/bin/pg_dump";
            pinfo.UseShellExecute = false;
            using (var process = new Process())
            {
                process.EnableRaisingEvents = true;
                process.StartInfo = pinfo;
                process.Start();
                while (!process.HasExited)
                    Thread.Sleep(2000);
                process.WaitForExit();
                if (process.ExitCode!=0)
                  throw new Exception("error");
                process.Close();
            }
            Response.ClearContent();
            Response.WriteFile(fn);
            Response.End();
            System.IO.File.Delete(fn);
            return null;
        }
}

結果:

Server Error in '/myapp' Application
--------------------------------------------------------------------------------

Thread was being aborted
Description: HTTP 500. Error processing request.
Stack Trace: 

System.Threading.ThreadAbortException: Thread was being aborted
  at System.Web.HttpApplication.async_handler_complete_cb (IAsyncResult ar) [0x0002d] in /usr/src/redhat/BUILD/mono-2.10.2/mcs/class/System.Web/System.Web/HttpApplication.cs:1010 
  at System.Web.Mvc.Async.AsyncResultWrapper+WrappedAsyncResult`1[System.Web.Mvc.Async.AsyncVoid].Begin (System.AsyncCallback callback, System.Object state, Int32 timeout) [0x00000] in <filename unknown>:0 
  at System.Web.Mvc.Async.AsyncResultWrapper.BeginSynchronous[AsyncVoid] (System.AsyncCallback callback, System.Object state, System.Func`1 func, System.Object tag) [0x00000] in <filename unknown>:0 
  at System.Web.Mvc.Async.AsyncResultWrapper.BeginSynchronous (System.AsyncCallback callback, System.Object state, System.Action action, System.Object tag) [0x00000] in <filename unknown>:0 
  at System.Web.Mvc.MvcHandler.BeginProcessRequest (System.Web.HttpContextBase httpContext, System.AsyncCallback callback, System.Object state) [0x00000] in <filename unknown>:0 
  at System.Web.Mvc.MvcHandler.BeginProcessRequest (System.Web.HttpContext httpContext, System.AsyncCallback callback, System.Object state) [0x00000] in <filename unknown>:0 
  at System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.BeginProcessRequest (System.Web.HttpContext context, System.AsyncCallback cb, System.Object extraData) [0x00000] in <filename unknown>:0 
  at System.Web.HttpApplication+<Pipeline>c__Iterator6.MoveNext () [0x00d42] in /usr/src/redhat/BUILD/mono-2.10.2/mcs/class/System.Web/System.Web/HttpApplication.cs:1365 
  at System.Web.HttpApplication.Tick () [0x00000] in /usr/src/redhat/BUILD/mono-2.10.2/mcs/class/System.Web/System.Web/HttpApplication.cs:932  

--------------------------------------------------------------------------------
Version information: Mono Runtime Version: 2.10.2 (tarball Mon Apr 18 18:57:39 UTC 2011); ASP.NET Version: 2.0.50727.1433
4

0 に答える 0