我目前正在玩一個異步的WebAPI控制器,服務圖像,我面臨一個奇怪的行爲。異步WebAPI控制器服務圖像 - 掛起的HTTP請求
簡短情況是: Controller通過ID獲取Image並從數據庫通過EF6加載它。 blobresult包含文件名,contentType和數據爲byte []。 我有潛在100的小圖像畫廊指向通過標準img標記控制器是這樣的:
<img src="//path/to/webapicontroller/1" />
這是或多或少的完整代碼:
public class BlobImageController : ApiController
{
public async Task<HttpResponseMessage> Get(Guid id, [FromUri]int width, [FromUri]int height)
{
var service = new BlobService();
// pull stuff via EF from database using async EF APIs
var blobResult = await service.ReadAsync(id);
string contentType = blobResult.ContentType;
var fileExtension = Path.GetExtension(blobResult.Filename);
var result = new HttpResponseMessage(HttpStatusCode.OK);
var stream = new MemoryStream(blobREsult.content);
stream.Position = 0;
result.Content = new StreamContent(stream);
result.Content.Headers.ContentLength = stream.Length;
result.Content.Headers.ContentType = new MediaTypeHeaderValue(contentType);
return result;
}
}
問題: 之前的同步控制器服務的很好,但是這個異步版本的瀏覽器只下載前7-10張圖片,所有其他請求都在等待處理。在服務器端沒有負載 - 它卡在某個地方。 如果我使用其他瀏覽器,它也可以與前7一起使用,並且我只能在服務器端收到7個請求。
當我看着Chrome開發工具時,未完成的請求全部掛起,而成功的請求是「OK」。
如果我使用ByteArrayContent,也會發生這種情況。這兩個版本都與同步版本配合良好。
我錯過了什麼?
你在.NET 4.5,並有'targetFramework'設置爲'4.5'在您的網頁。配置? –
是 - config&project中的targetFramework =「4.5」。 webapp甚至依賴於一些.NET 4.5程序集。 –