ASP.NET Web API
アクション内の非同期タスクで少し失われています。私はアクションを持っている:タスクが終了するまでアクションから復帰しない
[HttpPost]
public async Task<HttpResponseMessage> Restart()
{
await AspManager.Restart();
return Request.CreateResponse(HttpStatusCode.OK, new { result = "Success", message = "IIS site successfully restarted" });
}
再起動は、長時間実行することができ、私はそれを待ってから、応答を返すようにしたいです。その後、私は、サービスを停止し、5秒待ってからサービスを開始する必要があり、メインRestart
方法でそう
public static async Task<Task> Restart()
{
var client = new Client("...");
CheckApiKey(client);
var task = Task.Factory.StartNew(async() =>
{
client.Stop();
await Task.Delay(5 * 1000);
throw new BusinessException("test");
client.Start();
});
return await task;
}
私はキーをチェックしています:ここで実行時間の長いコードです。この作業が完了するまで、コントローラからの操作は戻ってはなりません。しかし、問題はアクションが復帰し、5秒後にBusinessException
がスローされるということです。
タスクに新しい例外がスローされています。なぜあなたは他の何かを期待していますか? – RandomStranger
Hmmm、そのスローはテスト用です。私が説明した問題は、クライアントが停止して起動してからhttp応答を返すまで待つ必要があることです。しかし、ここでは最初にそれが返され、例外がスローされます。 –