2012-05-13 13 views
2

私は、ASP.NET Web APIで着信要求をファイルとして保存する次のタスクを持っています。私のローカルではうまくいくようですが、ホスティングサーバーではファイルは保存されず、ログにはフォルトが表示されます。Task.Status.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()); 

答えて

3

あなたは例外を見て、別の継続を持っている必要があります:

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

だから、トリックはまだそれに継続を定義しながら、まだ初期のタスクを返すことです。