Я пытаюсь сохранить и получить изображение из HTTPRuntime Cache, но я получаю исключение. Я могу сохранить поток в кеш, но когда я пытаюсь его получить, я получаю исключение:Получение изображения из HTTPRuntime Cache
запрос был прерван. Соединение было неожиданно закрыто
Вот мой код:
public void ProcessRequest(HttpContext context)
{
string courseKey = context.Request.QueryString["ck"];
string objKey = context.Request.QueryString["file"];
if(HttpRuntime.Cache[objKey] !=null)
{
using (Stream stream = (Stream)HttpRuntime.Cache[objKey]) // here is where I get an exception
{
var buffer = new byte[8000];
var bytesRead = -1;
while ((bytesRead = stream.Read(buffer, 0, buffer.Length)) > 0)
{
context.Response.OutputStream.Write(buffer, 0, bytesRead);
}
}
return;
}
var response = Gets3Response(objKey, courseKey, context);
if (response != null)
{
using (response)
{
var MIMEtype = response.ContentType;
context.Response.ContentType = MIMEtype;
var cacheControl = context.Response.CacheControl;
HttpRuntime.Cache.Insert(objKey, response.ResponseStream, null, DateTime.UtcNow.AddMinutes(20), Cache.NoSlidingExpiration);
using (Stream responseStream = response.ResponseStream)
{
var buffer = new byte[8000];
var bytesRead = -1;
while ((bytesRead = responseStream.Read(buffer, 0, buffer.Length)) > 0)
{
context.Response.OutputStream.Write(buffer, 0, bytesRead);
}
}
}
}
}
А вот исключение я получаю
У меня был HttpRuntime.Cache.Insert внутри блока использования, но я все еще получал ошибку. Я не знаю, почему я переехал за пределы используемого блока. Я думаю, что я немного расстроен. Что касается вашего второго комментария, у меня есть мои html-файлы, хранящиеся в Amazon s3, включая мои таблицы стилей изображений и файлы Javascript. Теперь мне нужно получить каждую из них отдельно. Вот как работает S3! Теперь я пытаюсь добавить поток каждого объекта в кеш, и когда я снова нажимаю ссылку, я извлекаю его из кеша, а не из Amazon S3. –
Вы не можете использовать 'using' вообще, если хотите, чтобы вернуться и использовать поток из кеша. В тот момент, когда блок «use» выходит за пределы области, поток удаляется. – HackedByChinese
Объекты, которые я извлекаю, - это не только изображения. они могут быть css-файлами .js файлов .html файлов или файлов, поэтому я не могу ограничить мою функцию только изображениями или растровыми изображениями по этой причине. –