【问题标题】:ASP.NET MVC Angular on IIS - MIME types configurationIIS 上的 ASP.NET MVC Angular - MIME 类型配置
【发布时间】:2020-11-06 16:42:55
【问题描述】:

我正在尝试在 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-mvc iis


    【解决方案1】:

    我相信部署站点后,需要在 IIS 中配置“system.webServer”元素中的任何内容。除非您修改 IIS 应用配置,否则 IIS 应用配置会覆盖 web.config。

    【讨论】:

    • 我还怀疑 web.config 配置被 IIS 应用程序配置覆盖。但是,即使我将服务器配置为映射此扩展,我仍然会收到 404 错误。正如我所说,当我只是简单地部署 Angular 应用程序时,不会发生这种情况。
    【解决方案2】:

    您可以尝试以下方法进行故障排除:

    1.你能直接从浏览器请求你的.dmafile,看看你得到什么响应头吗?

    2.启用Failed Request Tracing 并在“完成请求跟踪”选项卡中查找 GENERAL_RESPONSE_HEADERS 部分。

    【讨论】:

      【解决方案3】:

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

      原来代码中有一个配置改变了 Angular 文件的根路径。

      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>
      

      【讨论】:

        猜你喜欢
        • 2014-10-30
        • 2011-11-15
        • 1970-01-01
        • 2012-07-04
        • 2011-07-02
        • 2016-02-13
        • 2016-05-13
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多