无法在Azure网站上托管MP4文件

44

我正在Azure的保留Web站点上托管静态网站(它是PaaS,无法访问操作系统/IIS)。我正在尝试添加一些.mp4视频,但是当我点击链接时却出现错误。

The resource you are looking for has been removed, had its name changed, 
or is temporarily unavailable.
请查看这里的示例。 如果我右键单击链接并尝试保存文件,我会得到“失败 - 没有文件”的错误提示。
我正在使用付费实例,所以不认为这是资源问题。视频文件小于2MB。它们从未起作用过。网站非常静态。
有人知道我该如何解决这个问题吗? 我应该以其他方式托管MP4文件吗?
谢谢,

你确定文件本身正在上传到Azure吗?在Visual Studio中,当它构建要上传的包时,根据该文件类型的设置,它可能实际上并没有被上传,因为它没有放入包中。 - Jaxidian
6个回答

79

这篇链接的 Stack Overflow 答案在概念上对我有用,但它没有指示适当的文件扩展名。相反,我的配置必须指示以下内容。(注意,对于任何有此问题的人,默认情况下我的 Azure 网站最初没有 web.config,因此我必须将以下内容添加到文本文件中,保存为 web.config,并通过 FTP 上传到我的 Web 根目录。

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <staticContent>
               <remove fileExtension=".mp4" />
               <mimeMap fileExtension=".mp4" mimeType="video/mp4" />
               <clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="7.00:00:00" />
     </staticContent>
    </system.webServer>
</configuration>

1
这个解决方案对我很有效,但在本地主机上运行时却不行。我需要管理两个不同的webconfig吗? - Marcelo Sader
6
mimeMap之前添加 <remove fileExtension=".mp4" /> - Vadim Ovchinnikov
谢谢,这对我有用。问题是,<clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="7.00:00:00" /> 是什么作用? - Daniel Congrove
1
它起作用了,但我必须将它添加到视频文件夹中。 - A. Morel

10

目前只有一种方法可以实现这个功能,我已经向Azure团队确认过。

在应用程序的根目录下添加一个名为wwwroot\web.config的web配置文件,并包含以下内容:

<?xml version="1.0" encoding="UTF-8"?>
  <configuration>
    <system.webServer>
      <staticContent>
        <mimeMap fileExtension=".mp4" mimeType="application/mp4" />
      </staticContent>
    </system.webServer>
  </configuration>

正如A. Morel所述,这对我起作用了,但是我必须将它放在视频本身的文件夹中。由于这是使用CLI创建的React应用程序,因此此项目中没有Web.config。 - Marc Ziss
不幸的是,即使是React堆栈,由于容器的架构方式,也需要web.config来正确配置服务器。希望很快,如果我们选择一个节点堆栈,它将只是Linux / Nginx / Node,没有任何Windows / .NET的东西。 - A. Wentzel

7

1
.MP4 没有正确配置。因此,我在站点根目录下创建了 web.config 文件,现在一切都很好。 - Ed Cunn
请问您能否接受我的原始答案以结束这篇帖子?谢谢! - RyanCEI
3
请注意,一旦您在web.config中添加了mime映射,您的本地副本可能会出现问题。这是我遇到的情况。在添加映射之前加上<remove fileExtension=".mp4" />即可解决此问题。 - zawisza

1
我遇到了完全相同的问题。视频可以在localhost上播放,但在部署到Azure后无法播放。 ewitkows' answer是正确的。Web服务器未返回正确的MIME类型,因此您需要将它们添加到web.config的<system.webServer>元素中。
但是,我想再添加一个细节。当您添加ewitkows' answer提到的代码时,您的网站可能会停止在localhost上显示视频,即使它在Azure上正确显示。如果您右键单击<video> HTML元素并从上下文菜单中单击查看视频菜单命令,则会给您一个500 HTTP状态码,并显示其IIS自定义错误页面,如下所示:

enter image description here

请注意配置错误配置文件配置源部分。它们告诉您,IIS已经为您在web.config中添加的元素拥有MIME类型映射。
<staticContent>
  <remove fileExtension=".ogv"/>
  <remove fileExtension=".webm"/>
  <remove fileExtension=".mp4"/>

  <mimeMap fileExtension=".ogv" mimeType="video/ogg"/>
  <mimeMap fileExtension=".webm" mimeType="video/webm"/>
  <mimeMap fileExtension=".mp4" mimeType="video/mp4"/>
</staticContent>

所以,您需要先删除IIS上的内容。然后它就可以在localhost和Azure上都运行。

0

-1
Azure Web Apps 不支持某些类型的媒体文件。您可以使用 Azure 媒体服务上传它,然后从您的代码中引用媒体文件。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接