我有一个使用ASP.NET Web Api编写的系统的API,并且试图扩展它以允许上传图像。我已经做了一些搜索,并发现如何使用MultpartMemoryStreamProvider和一些异步方法接受文件的建议方式,但我在ReadAsMultipartAsync上的等待永远不会返回。Request.Content.ReadAsMultipartAsync永不返回
下面是代码:
[HttpPost]
public async Task<HttpResponseMessage> LowResImage(int id)
{
if (!Request.Content.IsMimeMultipartContent())
{
throw new HttpResponseException(HttpStatusCode.UnsupportedMediaType);
}
var provider = new MultipartMemoryStreamProvider();
try
{
await Request.Content.ReadAsMultipartAsync(provider);
foreach (var item in provider.Contents)
{
if (item.Headers.ContentDisposition.FileName != null)
{
}
}
return Request.CreateResponse(HttpStatusCode.OK);
}
catch (System.Exception e)
{
return Request.CreateErrorResponse(HttpStatusCode.InternalServerError, e);
}
}
我能一路过关斩将一步:
await Request.Content.ReadAsMultipartAsync(provider);
此时它永远不会完成。
为什么我的等待永不返回?
更新
我试图使用curl张贴到这一行动,命令如下:
C:\cURL>curl -i -F [email protected]:\LowResExample.jpg http://localhost:8000/Api/Photos/89/LowResImage
我曾尝试使用以下HTML张贴到行动,以及还试图和同样的事情发生:
<form method="POST" action="http://localhost:8000/Api/Photos/89/LowResImage" enctype="multipart/form-data">
<input type="file" name="fileupload"/>
<input type="submit" name="submit"/>
</form>
请问你的客户端代码是什么样子? – svick 2013-03-04 16:29:36
你能分享你的原始请求的外观吗? – 2013-03-04 17:31:49
在'await'之后的代码中放置一个断点。有时候,当你使用async/await(根据我的经验)时,它不会中断/下一行。 – Micah 2013-03-05 02:16:30