我想知道是否有人知道因为发生了这件事:
这不起作用:
[AcceptVerbs("POST")]
public void AddFile()
{
if (!Request.Content.IsMimeMultipartContent("form-data"))
{
throw new HttpResponseException(HttpStatusCode.UnsupportedMediaType);
}
var streamProvider = new MultipartFormDataMemoryStreamProvider();
Request.Content.ReadAsMultipartAsync(streamProvider).ContinueWith(t =>
{
....
});
}
但如果它有效(是正确的解决方案吗?):
[AcceptVerbs("POST")]
public Task AddFile()
{
if (!Request.Content.IsMimeMultipartContent("form-data"))
{
throw new HttpResponseException(HttpStatusCode.UnsupportedMediaType);
}
var streamProvider = new MultipartFormDataMemoryStreamProvider();
return Request.Content.ReadAsMultipartAsync(streamProvider).ContinueWith(t =>
{
....
});
}
答案 0 :(得分:0)
在第一个示例中,您不是从ReadAsMultipartAsync
处理返回的任务。该方法立即退出。
在第二个示例中,您将任务交给基类,基类为您处理任务并等待它的执行。
如果您不想退回任务,例如如果您想在完成后执行某些操作,则可以将方法标记为async
和await
任务,如下所示:
[AcceptVerbs("POST")]
public async Task AddFile()
{
if (!Request.Content.IsMimeMultipartContent("form-data"))
{
throw new HttpResponseException(HttpStatusCode.UnsupportedMediaType);
}
var streamProvider = new MultipartFormDataMemoryStreamProvider();
await Request.Content.ReadAsMultipartAsync(streamProvider).ContinueWith(t =>
{
....
});
}