. net основной веб-API, файлы изображений c не загружаются должным образом? - PullRequest
0 голосов
/ 09 апреля 2020

У меня есть. net core web API PROJECT. Я хочу поместить в этот проект несколько статических c изображений. У меня нижеприведенный код в файле запуска

var provider = new FileExtensionContentTypeProvider();
// Add new mappings
provider.Mappings[".myapp"] = "application/x-msdownload";
provider.Mappings[".htm3"] = "text/html";
provider.Mappings[".image"] = "image/png";
provider.Mappings[".png"] = "image/png";
// Replace an existing mapping
provider.Mappings[".rtf"] = "application/x-msdownload";
app.UseStaticFiles();
app.UseStaticFiles(new StaticFileOptions()
{
   FileProvider = new PhysicalFileProvider(
   Path.Combine(Directory.GetCurrentDirectory(), @"MyStaticFiles")),
   RequestPath = new PathString("/StaticFiles"),
   ContentTypeProvider = provider
});   

, когда я запускаю или развертываю этот веб-проект, я проверил, есть ли в нем папка StaticFiles с тестом .png, когда я просматриваю test.tt/StaticFiles/test.png, или test.tt/wwwroot/StaticFiles/test.png, или test.tt/wwwroot/StaticFiles/images/test.png

браузер не загружает это изображение, он отображает белую страницу где я проверяю на сетевой консоли от F12, он доставляет ответ типа документа и json. Моя проблема в том, что изображение не отображается, я пробовал больше изображений, но это не помогло. Я уверен, что в моем пути есть изображение, папка.

Вы можете сказать, как, если я просматриваю test.png, прямой путь к получить файл stati c. net core изображений WEB API?

1 Ответ

1 голос
/ 09 апреля 2020

По умолчанию, stati c файлов go в wwwroot в вашем проекте root. При вызове app.UseStaticFiles() этот каталог обслуживается по базовому пути сайта, т.е. /. Таким образом, файл типа wwwroot/images/test.png будет доступен на /images/test.png (примечание: без wwwroot части).

Я не уверен, что в мире вы делаете с остальными этот код здесь, но вы по существу добавляете дополнительный обслуживаемый каталог в [project root]/MyStaticFiles, который затем будет обслуживаться в /StaticFiles. Таким образом, во-первых, test.png фактически должен находиться в MyStaticFiles, , а не wwwroot, а затем вы получите доступ, запросив /StaticFiles/test.png.

Однако есть нет необходимости в этом другом каталоге. Если вы просто хотите добавить дополнительные типы носителей, вы можете сделать это с помощью:

services.Configure<StaticFileOptions>(o =>
{
    var provider = new FileExtensionContentTypeProvider();
    provider.Mappings.Add(".myapp", "application/x-msdownload");
    // etc.
    o.ContentTypeProvider = provider;
});

, а затем просто использовать:

app.UseStaticFiles();

Больше ничего не требуется.

...