ReadAsMultipartAsync不起作用

时间:2017-02-15 19:44:24

标签: c# .net http

我想知道是否有人知道因为发生了这件事:

这不起作用:

[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 =>
    {
        ....
    });
}

1 个答案:

答案 0 :(得分:0)

在第一个示例中,您不是从ReadAsMultipartAsync处理返回的任务。该方法立即退出。

在第二个示例中,您将任务交给基类,基类为您处理任务并等待它的执行。

如果您不想退回任务,例如如果您想在完成后执行某些操作,则可以将方法标记为asyncawait任务,如下所示:

[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 =>
    {
        ....
    });
}