使用HttpResponseMessage获取图像的最佳/最快方法是什么
本文关键字:方法 是什么 最佳 HttpResponseMessage 获取 图像 使用 | 更新日期: 2023-09-27 18:31:17
>我目前有这个方法:
public HttpResponseMessage Get(string FileId, string VersionId)
{
byte[] fileContents;
var file = DataRepository.GetSingle<FileModel>(ObjectId.Parse(FileId));
var fileDir = file.Dir + "/"+VersionId+ file.FileExtension;
var result = new HttpResponseMessage(HttpStatusCode.OK);
using (MemoryStream memoryStream = new MemoryStream())
{
using (var image = new Bitmap(WebRequest
.Create(fileDir)
.GetResponse()
.GetResponseStream()))
{
image.Save(memoryStream, StorageServiceHelper.GetImageFormatFromFileName(fileDir));
fileContents = memoryStream.ToArray();
var stream = new MemoryStream(fileContents);
result.Content = new StreamContent(stream);
result.Content.Headers.ContentType = new MediaTypeHeaderValue(file.MediaType);
}
}
return result;
因此,对于每个图像请求,它都会调用此方法,但是在第一个请求上似乎非常慢(每个请求至少 1 秒 5 kb 文件)。有没有更快的方法可以做到这一点? }
这
看起来是一个相当复杂的方法,但我不知道你为什么这样做的细节。 无论如何,这是我返回图像的控制器:
public async Task<HttpResponseMessage> Get(HttpRequestMessage request, int id)
{
byte[] img = await _repo.GetImgAsync(id);//gets image from database.
HttpResponseMessage msg = new HttpResponseMessage(HttpStatusCode.OK)
{
Content = new ByteArrayContent(img)
};
msg.Content.Headers.ContentType = new MediaTypeHeaderValue("image/png");
return msg;
}
此外,如果它只是第一个请求很慢,则可能 Asp.Net 启动应用程序。 如果在 IIS 中重新启动应用程序池,则可以在实时服务器上看到相同的内容。