Я пытаюсь написать некоторое промежуточное программное обеспечение для обслуживания Azure Blobs через прокси. Вызывается обработчик, извлекается blob, но мое изображение не отображается.Обслуживание изображений из хранилища Azure Blob в ядре с точечной сетью
Я написал службу для подключения к учетной записи хранения и создания клиента Blob. Я написал промежуточное программное обеспечение, которое расходует службу, а затем загружает запрошенный блок и записывает его в ответ. Обычно я ожидал бы загрузить blob в виде байтового массива или потока и записать его в OutputStream, и это не похоже на использование нового httpContext в ядре .net.
Мои Middleware:
namespace SampleApp1.WebApp.Middleware
{
public class BlobFileViewHandler
{
public BlobFileViewHandler(RequestDelegate next)
{
}
public async Task Invoke(HttpContext httpContext, IBlobService svc)
{
string container = httpContext.Request.Query["container"];
string itemPath = httpContext.Request.Query["path"];
Blob cbb = await svc.GetBlobAsync(container, itemPath);
httpContext.Response.ContentType = cbb.ContentType;
await httpContext.Response.Body.WriteAsync(cbb.Contents, 0, cbb.Contents.Length);
}
}
// Extension method used to add the middleware to the HTTP request pipeline.
public static class BlobFileViewHandlerExtensions
{
public static IApplicationBuilder UseBlobFileViewHandler(this IApplicationBuilder builder)
{
return builder.UseMiddleware<BlobFileViewHandler>();
}
}
}
Я называю промежуточное с помощью функции карты в запуске, как показано ниже:
app.Map(new PathString("/thumbs"), a => a.UseBlobFileHandler());
И, наконец, я пытаюсь использовать этот обработчик на тестовой странице следующим образом:
<img src="~/thumbs?qs=1" alt="thumbtest" />
Когда я отладки I C ГЭЭ все правильные детали удара, но изображение не загружает, я получаю следующее:
Я чувствую, что я что-то просто не хватает, но я не уверен, что это такое. Я использую NetCoreApp версии 1.1.
Я попробовал ваше решение, beceuse это то, что мне нужно, но есть проблемы с помощью следующей строки app.Map (новый PathString ("/ большие пальцы "), a => a.UseBlobFileHandler()); можно u сделать больше информация pls. thnx – Wasyster
app.Map() просто замыкает конвейер и позволяет среде выполнения знать, что любой запрос к данному пути должен обрабатываться указанным промежуточным программным обеспечением. Так моделируются HttpHandlers в ядре .net. – randcd
Я это понимаю, но он показывает мне ошибку для a => a.UseBlobFileHandler() – Wasyster