mimeMap在Azure网站中不起作用

本文关键字:不起作用 网站 Azure mimeMap | 更新日期: 2023-09-27 18:27:00

我有一个Azure网站,它由几个虚拟应用程序组成。根应用程序具有SPA(角度)的URL重写规则:

<rule name="AngularJS" stopProcessing="true">
  <match url=".*"/>
  <conditions  logicalGrouping="MatchAll">
    <!--Is not file-->
    <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true"/>
    <!--Is not directory-->
    <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true"/>
    <!--Is not /api-->
    <add input="{REQUEST_URI}" pattern="^/(api)" negate="true"/>
    <!--Is not *.extension-->
    <add input="{URL}" pattern="^.*'.(ashx|axd|css|gif|png|mov|MOV|avi|ttf|jpg|jpeg|js|flv|f4v|woff|woff2|json)$" negate="true"/>
  </conditions>
  <action type="Rewrite" url="/"/>
</rule>

根应用程序还有一个非常小的OWIN/Katana中间件应用程序,它运行静态文件中间件以根据条件返回单个页面。RAMMFAR被关闭,因此静态文件中间件仅用于返回主页。

我的问题是,我有.woff、.woff2和.json文件,它们拒绝在Azure中加载,但在本地IIS中加载良好。我有一个web.config,其中包含以下内容:

<system.webServer>
  <staticContent>
    <remove fileExtension=".woff"/>
    <mimeMap fileExtension=".woff" mimeType="application/x-font-woff"/>
    <remove fileExtension=".woff2"/>
    <mimeMap fileExtension=".woff2" mimeType="application/x-font-woff2"/>
    <remove fileExtension=".json"/>
    <mimeMap fileExtension=".json" mimeType="application/json"/>
  </staticContent>
</system.webServer>

这在Azure中不起作用。它在本地运行良好,但在Azure中运行不好。我甚至在文件所在的每个文件夹中都放了web.config,以确保规则不会被覆盖。我认为这可能与在Azure网站中使用虚拟应用程序有关,但我无法更改我的网站结构。如何使.woff、.woff2和静态json文件得到正确的服务?edit:刚刚检查了IIS日志,发现其中一个文件的请求跟踪失败。我收到一个"SECURITY_DENIED_BY_IMEMAP"错误,这意味着这与IIS未获取web.config有关

TLDR:即使我有合适的web.config(据我所知),woff、json和woff2文件也会返回404,即使它们存在于指定位置的服务器上

mimeMap在Azure网站中不起作用

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

将web.config文件添加到应用程序wwwroot'web.config的根目录,其中包含以下内容

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

如果您使用OWIN/Katana,则需要处理静态文件-添加Nuget Microsoft.OWIN.StaticFiles Install-Package Microsoft.Owin.StaticFiles