簡體   English   中英

我怎么知道Task.Isfaulted為什么是真的?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM