首页 > 解决方案 > IIS 上的 ASP.NET MVC Angular - MIME 类型配置

问题描述

我正在尝试在 IIS 上部署我的 mvc angular 应用程序,到目前为止一切正常。但是,现在我需要提供一些带有自定义扩展名的静态文件(例如.dma)。为此,我为我的站点添加了适当的 MIME 类型配置,但它似乎不起作用。

二进制文件的一般结构如下:

.
+-- AngularApp
|   +-- dist
    |   +-- assets
        |   +-- specialfile.dma
        |   +-- ...
        +-- index.html
+-- wwwroot
|   +-- icon.svg
+-- appsettings.json
+-- web.config
+-- *.dll

我的 web.config 看起来像这样。

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <location path="." inheritInChildApplications="false">
    <system.webServer>
      <handlers>
        <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
      </handlers>
      
      <aspNetCore processPath="dotnet" arguments=".\mywebapp.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" />
    </system.webServer>
  </location>
    <system.webServer>
        <staticContent>
            <mimeMap fileExtension=".dma" mimeType="application/octet-stream" />
        </staticContent>
    </system.webServer>
</configuration>

当我尝试从资产文件夹中获取扩展名为.dma的文件时,找不到它。我已经检查过是否可以从同一个文件夹中检索任何其他文件(例如 png 图像),因此路由很好。

我还部署了独立于 MVC 应用程序的 Angular 应用程序,结果证明我可以获取该文件。

我在这里想念什么?

我还需要添加其他配置吗?

标签: asp.net-mvciis

解决方案


经过一段时间的故障排除,我终于弄清楚发生了什么。

事实证明,代码中有一个配置改变了角度文件的根路径。

services.AddSpaStaticFiles(configuration =>
{
     configuration.RootPath = "AngularApp/dist";
});

而且似乎 IIS 只是忽略了该文件夹的任何常规配置。

我必须为资产文件夹创建一个虚拟目录,并将 MIME 类型配置添加到新的位置标记中。

所以,我的 web.config 现在看起来像这样。

<configuration>
...
 <location path="assets">
   <system.webServer>
       <staticContent>
           <mimeMap fileExtension=".dma" mimeType="application/octet-stream" />
       </staticContent>
    </system.webServer>
 </location>
</configuration>

推荐阅读