我的WebApi 2控制器中有以下方法
[Route("document/{documentGuid:Guid}/basic")]
[DocumentName("label")]
[HttpGet]
public async Task<HttpResponseMessage> BasicDocument(Guid documentGuid)
{
byte[] data = await _documentsGenerator.CreateDocument(documentGuid);
HttpResponseMessage result = new HttpResponseMessage(HttpStatusCode.OK);
result.Content = new ByteArrayContent(data);
result.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");
result.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment")
{
FileName = string.Format("document-{0}-basic.pdf", documentGuid)
};
return result;
}
当我从浏览器调用它来下载文件时,我得到了该文件,但是IIS工作者列表中的请求仍然未决:
如果我从方法中删除async / await代码,一切正常。我正在执行什么样的异步操作并不重要。只要我使用await SomeMethod()
,ExecuteRequestHandler
就会挂起。可能是什么原因?
答案 0 :(得分:0)
最可能的原因是某些运行时没有在.NET 4.5(或更新版本)中运行。
请确保:
httpRuntime.targetFramework
中的属性web.config
设置为适当的值(例如4.5
)。