ASP.NET MVC не обслуживает файлы MP3 - PullRequest
0 голосов
/ 10 октября 2018

Я пытаюсь воспроизвести файл mp3 в качестве фоновой музыки на веб-сайте.Для обслуживания я создал папку с названием mp3 в Content и добавил в нее файл.HTML, который я использую, выглядит как

<audio loop="loop" autoplay="autoplay">
  <source src="/mp3/myfile.mp3" type="audio/mp3" />
</audio>

Браузер возвращает 404 и да .. Я проверил правильное имя файла и даже переименовал его в "a.mp3", чтобы убедиться, что ничего смешного не происходиттам.

Если я выберу Открыть в новой вкладке, я также получу 404. (т.е. mydomain.com/mp3/a.mp3 дает 404)

В качестве эксперимента я поместил файл js впапка mp3 .. (mydomain, com / mp3 / test.js), и она без проблем подается на новую вкладку.Также поместил файл png в папку (mydomain.com/mp3/pic.png), и он обслуживается без проблем.Копирование его в другую используемую папку, такую ​​как js или css, дает тот же результат.Я могу подать файлы js или css в папку, но получить 404, если я попытаюсь извлечь файл mp3.

Те же результаты, что и для FF и Chrome, поэтому он не зависит от браузера.

Кажется, что-то определенно заставляет его отказываться обслуживать mp3-файлы.

Кстати, я также открыл файлы на рабочем столе Windows, и они без проблем воспроизводятся в WMP, поэтому с файлами все в порядке.

Ответы [ 2 ]

0 голосов
/ 11 октября 2018

Я наконец-то понял проблему.Я понял, что, хотя для обработчика MVC было статическое сопоставление файлов, любые запросы все равно будут проходить через маршрутизатор ASP.NET MVC.

Оказывается, у меня был определен собственный маршрут, который по соображениям безопасности заблокировалтипы файлов, которые он будет обслуживать, и mp3 не был одним из них.

0 голосов
/ 10 октября 2018

Во-первых, вы должны проверить путь с помощью инструментов разработчика браузера (просмотреть исходный код), чтобы убедиться, что путь к файлу отображается правильно.Кажется, ваша проблема возникла из-за неправильного пути к файлу.

Во-вторых, вместо создания пути src вручную, используйте помощник @Url.Content() с относительным виртуальным путем к файлу MP3, как в примере ниже, убедитесь, что используется правильный путь:

<audio loop="loop" autoplay="autoplay">
  <source src="@Url.Content("~/mp3/myfile.mp3")" type="audio/mp3" />
</audio>

Если страница развернута на производственном сервере, убедитесь, что в настройках IIS включен тип MIME audio/mp3, и у вас есть разрешение на чтение / запись для папки /mp3.Вы можете проверить (и добавить) этот параметр в разделе <system.webServer> в файле applicationHost.config, machine.config или web.config:

<staticContent>
     <mimeMap fileExtension=".mp3" mimeType="audio/mp3" />
</staticContent>
...