2

私の 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());
4

1 に答える 1

3

例外を確認するには、別の継続が必要です。

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

したがって、秘訣は、継続を定義しながら最初のタスクを返すことです。

于 2012-05-13T12:19:33.773 に答える