2016-10-26 14 views
0

実行に1分以上かかりますが、コントロールをすぐにビューに戻すアクションを作成する最善の方法はありますか?長時間実行アクションasp.net core mvc

私はHangfireソリューションがあることを知っていますが、実行を保存するためにデータベースを使用するので、もっと簡単なものが必要です。

私はasp.netコアを使用しています。

これは、自分の行動がやっていることです。

private void CipherData() 
    { 
     var posts = _context.Posts.All().ToList(); 
     foreach (var post in posts) 
     { 
      post.TextCrypt = EncryptionHelper.Encrypt(post.Text); 
      _context.Posts.Update(post); 
     } 
     _context.SaveChanges(); 
    } 
+1

あり、彼らはasp.netのコアの周りにもあるかどうかわからない、この1に類似の質問の多くがあるが、これらのいずれかが動作しないことをあまりにも多くの違いがあり、私が疑うので、これは一般的な問題であり、 :http://stackoverflow.com/search?q=asp.net+fire+forget – Igor

+0

fire-forgetタスク(または何かの何か)よりも弾力性のあるプロセスで、それをより適切にオフロードできないでしょうか?それが完了したかどうかを知りたいと思うようです。 – Igor

+0

私は本当にそれが終了するかどうかを知りたくありません。 – Beetlejuice

答えて

-1

それはデータベースコンテキスト(注射さを)失うので、私は、(それがこれを行う方法です)Task.Runを使用して問題を抱えていました。

このプロセスで使用する新しいデータベースコンテキストを作成します。基本的には:

public IActionResult CipherData() 
{ 
    Task.Run(() => 
    { 
     //create a new dbcontext here 
     //perform database manipulation using this new dbcontext 
    } 
    return RedirectToAction("Index", "Home"); 
} 
+0

悪い考え。 IISはいつでもあなたの仕事を落とすことができます。 – ZOXEXIVO

関連する問題