I.p*_*ern 2 c# api asp.net-mvc post
我正在关注这个博客.我想创建接受文件的post方法.
[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"));
}
}
Run Code Online (Sandbox Code Playgroud)
当我调试时,我得到了t.IsFaulted是真的,它无法上传.我怎么知道它失败的原因以及如何解决?
如果Task
出现故障,theTask.Exception
会告诉你到底发生了什么,但坦率地说,这将是一个很大很容易直接await theTask
与使用常规的异常处理.ContinueWith
是一项遗留功能(请参阅Filder指出的4.0免责声明),并且很少在新代码中使用.这整个方法async
非常容易.
归档时间: |
|
查看次数: |
174 次 |
最近记录: |