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

Posted

技术标签:

【中文标题】无法在 Azure 网站上托管 MP4 文件【英文标题】:Unable to host MP4 files on Azure web site 【发布时间】:2013-06-13 15:51:25 【问题描述】:

我在 Azure 中的保留网站上托管一个静态网站(它是 PaaS,无法访问 OS/IIS)。我正在尝试添加一些 .mp4 视频,但是当我点击链接时,我得到了

The resource you are looking for has been removed, had its name changed, 
or is temporarily unavailable.

请参见示例here。 如果我右键单击链接并尝试保存文件,我会得到 - 失败 - 没有文件。

我使用的是付费实例,所以不要认为这是资源问题。视频文件小于 2MB。他们从来没有工作过。该网站非常静态。

有谁知道我该如何解决这个问题? 我应该以其他方式托管 MP4 文件吗?

谢谢,

【问题讨论】:

您确定文件本身正在上传到 Azure 吗?在 Visual Studio 中,当它构建要上传的包时,根据该文件类型的设置,它可能实际上并没有被上传,因为它没有放入包中。 【参考方案1】:

链接的 SO 答案在概念上对我有用,但它没有指示适当的文件扩展名。我的配置必须改为指示以下内容。 (请注意,对于任何有此问题的人,默认情况下,我的 azure 网站最初没有 web.config,因此我必须将以下内容添加到文本文件中,另存为 web.config,并将 FTP 保存到我的 webroot。

<?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>

【讨论】:

这个解决方案对我来说很好,但当我在本地主机上运行时就不行了。我必须管理两个不同的 webconfig 吗? @MarceloSader 在mimeMap 之前添加&lt;remove fileExtension=".mp4" /&gt; 谢谢,这对我有用。问题,&lt;clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="7.00:00:00" /&gt; 是做什么的? 它有效,但我必须将它添加到视频的文件夹中。【参考方案2】:

您是否按要求确认正确配置了 .MP4 的 MIME 类型:

Windows Azure - Serve unknown (mp4) MIME types in Windows Azure IIS storage

【讨论】:

.MP4 未正确配置。所以我在网站的根目录下创建了 web.config 文件,一切都很好。 你能接受我原来的答案来关闭帖子吗?谢谢! 请记住,一旦您将 mime 映射添加到您的 web.config,您的本地副本可能会给您带来一些问题。我就是这种情况。在添加映射之前添加 将解决该问题。【参考方案3】:

目前只有一种方法可以做到这一点,我已与 Azure 团队确认了这一点。

在应用程序wwwroot\web.config的根目录下添加一个web.config文件,内容如下

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

【讨论】:

就像 A. Morel 上面所说的那样,这对我有用,但我必须将它与视频本身放在文件夹中。该项目中没有 Web.config,因为它是使用 CLI 创建的 React 应用程序 不幸的是,即使是 React Stacks,由于容器的架构方式,也需要 web.config 为此正确配置服务器。希望很快,如果我们选择一个节点堆栈,它将是 Linux/nginx/Node 并且根本没有 Windows/.NET 的东西。【参考方案4】:

我遇到了同样的问题。视频在 localhost 上播放,但在部署到 Azure 时没有。

ewitkows' answer 是正确的。 Web 服务器没有返回正确的 MIME 类型,因此您需要将它们添加到 web.config 的 &lt;system.webServer&gt; 元素中。

不过,我想再补充一个细节。添加 ewitkows' answer 提到的代码时,您的网站可能会停止在 localhost 上显示视频,即使它在 Azure 上正确显示。如果您右键单击&lt;video&gt; html 元素并从上下文菜单中单击 查看视频 菜单命令,它将为您提供 500 HTTP 状态代码,并且为它显示 IIS 自定义错误页面,如下所示:

观察配置错误配置文件配置源部分。他们告诉您,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 上运行。

【讨论】:

【参考方案5】:

如果您使用的是 Azure 应用服务,请参阅How to add Mime Types in ASP.NET Core 的答案 我尝试了 web.config 路由,但没有用,但编辑 Startup.cs 可以

【讨论】:

【参考方案6】:

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

【讨论】:

以上是关于无法在 Azure 网站上托管 MP4 文件的主要内容,如果未能解决你的问题,请参考以下文章

Azure Windows VM上的IIS Web托管问题

Azure 网站如何访问 Azure 托管的虚拟机?

保护 Azure 存储帐户中托管的静态网站的路由

我可以在 Azure 网站上打开端口吗?

在Azure Storage 托管HTTP静态网站

在 Dynamics CRM Online 中的 iFrame 中托管的 OpenIDConnect Azure 网站