[英]How can I see why Task.Isfaulted is true?
我正在關注這個博客。 我想創建將接受文件的發布方法。
[HttpPost]
public Task<IEnumerable<FileDescDto>> Post()
{
var folderName = "Uploads";
var PATH = HttpContext.Current.Server.MapPath("~/" + folderName);
var rootUrl = Request.RequestUri.AbsoluteUri.Replace(Request.RequestUri.AbsolutePath, String.Empty);
if (Request.Content.IsMimeMultipartContent())
{
var streamProvider = new CustomMultipartFormDataStreamProvider(PATH);
var task = Request.Content.ReadAsMultipartAsync(streamProvider).ContinueWith<IEnumerable<FileDescDto>>(t =>
{
if (t.IsFaulted || t.IsCanceled)
{
throw new HttpResponseException(HttpStatusCode.InternalServerError);
}
var fileInfo = streamProvider.FileData.Select(i => {
var info = new FileInfo(i.LocalFileName);
return new FileDescDto(info.Name, rootUrl + "/" + folderName + "/" + info.Name, info.Length / 1024);
});
return fileInfo;
});
return task;
}
throw new HttpResponseException(Request.CreateResponse(HttpStatusCode.NotAcceptable, "This request is not properly formatted"));
}
}
當我調試時,我得到t.IsFaulted為true,並且無法上傳。 如何查看為什么失敗以及如何解決?
如果一個Task
出現故障, theTask.Exception
會告訴你到底發生了什么,但坦率地說,這將是一個更容易簡單地await theTask
和使用正則異常處理。 ContinueWith
是一項舊功能(請參閱Filder指出的4.0免責聲明),並且很少在新代碼中使用。 整個方法很容易async
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.