Task.Status.Faulted - 如何处理异常

时间:2012-05-13 04:50:58

标签: exception httpclient task asp.net-web-api

我在ASP.NET Web API中执行以下任务,将传入的请求保存为文件。它似乎在我的本地工作正常,但在托管服务器上,文件没有保存,我的日志表明状态是Faulted。

据我了解,这与未处理的异常有关。我如何找出这些例外是什么,以便我可以解决它们?

    // Save file
    MultipartFormDataStreamProvider provider = new MultipartFormDataStreamProvider(HttpContext.Current.Server.MapPath("~/Files"));
    Task<IEnumerable<HttpContent>> task = Request.Content.ReadAsMultipartAsync(provider);

    return task.ContinueWith<string>(contents =>
    {
        string filename = provider.BodyPartFileNames.First().Value;

        FileInfo file = new FileInfo(filename);

        Log.LogMessage("Status: " + task.Status.ToString() + " File Exists: " + file.Exists);

        // Delete excel file when complete.
        File.Delete(filename);

        // Return message to user.
        return "Complete";

    }, TaskScheduler.FromCurrentSynchronizationContext());

1 个答案:

答案 0 :(得分:3)

您需要有另一个延续来查看异常:

Task task1 = () => ....;
task1.ContinueWith((t) => if(t.IsFaulted) Trace.WriteLine(t.Exception.ToString()));
return task1;

所以诀窍是仍然返回初始任务,同时仍然在其上定义延续。