C# mimeMap不在Azure网站中工作

C# mimeMap不在Azure网站中工作,c#,azure,iis,owin,azure-web-app-service,C#,Azure,Iis,Owin,Azure Web App Service,我有一个Azure网站,它由几个虚拟应用程序组成。根应用程序具有SPA的URL重写规则(角度): 根应用程序还有一个非常小的OWIN/Katana中间件应用程序,它运行静态文件中间件,根据条件返回单个页面。RAMMFAR已关闭,因此静态文件中间件仅用于返回主页 我的问题是,我有.woff、.woff2和.json文件,它们拒绝在Azure中加载,但在本地IIS中加载良好。我有一个web.config,其中包含以下内容: <system.webServer> <stati

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


根应用程序还有一个非常小的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.configs放在文件所在的每个文件夹中,以确保规则不会被覆盖。我认为这可能与在Azure网站中使用虚拟应用程序有关,但我无法更改我的网站结构。如何才能正确地提供这些.woff、.woff2和静态json文件? 编辑:刚刚检查了IIS日志,发现其中一个文件的请求跟踪失败。我收到一个“SECURITY\u DENIED\u BY\u MIMEMAP”错误,这意味着这与IIS没有获取web.config有关。


TLDR:即使我有适当的web.config(据我所知),woff、json和woff2文件仍返回404,即使它们存在于服务器上的指定位置。如果您使用的是OWIN/Katana,您需要处理静态文件-添加Nuget Microsoft.Owin.StaticFiles
安装包Microsoft.Owin.StaticFiles

目前只有一种方法可以做到这一点,我与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>


您是否检查过.woff问题是否发生在普通Azure Web应用程序上(没有虚拟目录)?如果是这样的话,它将有助于降低问题的复杂性,简化到更简单的描述。我无法用普通应用程序或虚拟应用程序来重新解释这一点,所以我猜还有其他因素。如果您可以直接或直接共享您的站点名称,这将有助于调查。根据规范,您应该使用
application/font-woff
。我们在所有Azure Web应用程序上都成功地使用了它。@viperguynaz我将切换到它,但我已经尝试了这两种方法,但都不起作用。david另一个因素是我在中间件中所做的工作。我将发布该代码。@davidebo我已经发布了中间件的代码。我没有检查虚拟目录——我的应用程序需要在同一azure网站中的另一个应用程序上调用api才能运行。我可能会尝试禁用所有的检查,并尝试这样做。我已经在使用静态文件中间件,而且它很乐意为每个其他文件提供服务
  <?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>