gpt4 book ai didi

c# - 异步 WebAPI Controller 服务图像 - 挂起的 HTTP 请求

转载 作者:太空宇宙 更新时间:2023-11-03 13:22:35 26 4
gpt4 key购买 nike

我目前正在使用一个提供图像的异步 WebAPI Controller ,但我遇到了一个奇怪的行为。

简短的场景是: Controller 通过 ID 获取图像并通过 EF6 从数据库加载它。blobresult 包含文件名、contentType 和字节 [] 形式的数据。我有一个小图片库,可能有 +100,它通过标准 img 标签指向 Controller ,如下所示:

<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;
}
}

问题:以前的 synchronos Controller 很好地服务于此,但是对于这个异步版本,浏览器只下载前 7-10 个图像,所有其他请求都处于待处理状态。服务器端没有负载 - 它卡在某处。如果我使用其他浏览器,它也适用于前 7 个浏览器,并且我在服务器端只收到 7 个请求。

当我查看 Chrome 开发工具时,未完成的请求都是待处理的,而成功的请求是“OK”的。

如果我使用 ByteArrayContent,也会发生这种情况。两个版本都与 synchronos 版本配合良好。

我错过了什么?

最佳答案

发现:我还使用了 Glimpse ASP.NET MVC 包。当我从 system.WebServer 配置中删除 Glimpse 模块时,一切都按预期工作。

我用这个包做了测试:

 <package id="Glimpse" version="1.8.2" targetFramework="net45" />
<package id="Glimpse.AspNet" version="1.8.0" targetFramework="net45" />
<package id="Glimpse.Mvc5" version="1.5.3" targetFramework="net45" />

我在 GitHub 上开了一个问题:https://github.com/Glimpse/Glimpse/issues/797

关于c# - 异步 WebAPI Controller 服务图像 - 挂起的 HTTP 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23663202/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com