私はメソッドに投稿された内容からデータベースにデータを挿入するWebAPIメソッドを作成しました。WebAPI:リクエストを処理しないように処理をプッシュするにはどうすればよいですか?
私の質問は、リクエスタが応答のためにぶら下がっていないように処理をオフにするにはどうすればいいですか?例えば
:私は作品を持って何
[HttpPost]
[Route("MyTest/ImportData")]
public HttpResponseMessage AddData([FromBody] XElement xmlBody)
{
try
{
// Verify that I can read the XML..
// Push XML off to another process to insert into database.
UpdateDataBase(xmlBody);
// Notify requester that I accepted the file.
return Request.CreateResponse(HttpStatusCode.OK);
}
catch (Exception ex)
{
return Request.CreateResponse(HttpStatusCode.InternalServerError);
}
}
。ただし、すべてのデータを挿入するのに最大4分かかることがあります。私はXMLを読んで、何とかプロセスをプッシュして、ユーザーにOK応答を与えることを確認したいと思います。
関連、デュープ選ぶだろう:http://stackoverflow.com/questions/36335345/web-api-fireを-and-forget – vcsjones
もう1つの一般的な方法は、データをキューに送信して、メソッドが非常に迅速に戻るようにすることですが、キューを監視するプロセスには常に必要な時間があります。 – Crowcoder
200 OKではなく、HTTP 202 Acceptedステータスコードを返すべきだとコメントしています。 202は作業がまだ完了していないが、ある時点で完了したことを示している。 – juunas