我有一個使用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