ASP.NET MVC不提供MP3文件

时间:2018-10-09 22:44:01

标签: asp.net-mvc mp3 html5-audio

我正在尝试在网站上播放mp3文件作为背景音乐。为此,我在Content中创建了一个名为mp3的文件夹,并将文件添加到其中。我使用的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)

作为一个实验,我在mp3文件夹中放置了一个js文件。(mydomain,com / mp3 / test.js),将其放到新标签中没有问题。还将png文件放在文件夹(mydomain.com/mp3/pic.png)中,可以正常使用。将其复制到正在使用的另一个文件夹(如js或css)中,将得到相同的结果。我可以提供文件夹中的js或css文件,但是如果尝试检索mp3文件,则会得到404。

FF和Chrome的结果相同,因此不是特定于浏览器的。

似乎是某些特定原因导致它拒绝提供mp3文件。

顺便说一句,我还在Windows桌面上打开了文件,它们在WMP中播放没有问题,因此文件没有问题。

2 个答案:

答案 0 :(得分:0)

首先,您应该使用浏览器的开发人员工具(查看源代码)检查路径,以确保正确显示了文件路径。您的问题似乎是由于文件路径错误引起的。

第二,而不是手动创建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.configmachine.config文件的web.config部分中检查(并添加)此设置:

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

答案 1 :(得分:0)

我终于找到了问题所在。我意识到,尽管MVC处理程序具有静态文件映射,但是所有请求仍将通过ASP.NET MVC路由器进行。

结果是,我定义了一个自定义路由,出于安全原因,它锁定了它将提供的文件类型,而mp3并不是其中之一。