我如何让IIS正确地在我的网站上提供.webmanifest文件?

时间:2018-03-29 23:26:28

标签: iis web-manifest

Favicon Generator汇集了一个供网站管理员使用的软件包,以便为许多不同的设备提供图标。该页面附带一个名为site.manifest的文件,该文件通过网页文档<head>中的以下标记进行链接:

<link rel="manifest" href="site.webmanifest">

根据Mozilla&#34; Web应用程序清单在JSON文本文件中提供有关应用程序(如名称,作者,图标和说明)的信息。清单的目的是将Web应用程序安装到设备的主屏幕,为用户提供更快的访问和更丰富的体验。&#34;

不幸的是,如果您使用的是Microsoft的Internet信息服务(IIS),如果您尝试访问site.webmanifest文件,则会收到404.3错误。

确切的错误消息如下:&#34;由于扩展配置,无法提供您请求的页面。如果页面是脚本,请添加处理程序。如果要下载文件,请添加MIME地图。&#34;

如何在IIS中正确提供site.webmanifest个文件?

6 个答案:

答案 0 :(得分:31)

默认情况下,IIS不会在其(IIS)核心设置中提供任何没有与其关联的MIME映射的文件。

要解决此问题,您需要将.webmanifest文件扩展名映射到相应的MIME类型。

要完成此操作,请打开IIS并按照以下步骤操作;

  1. 在左侧,在&#34; Connections&#34;中选择您的网站或整个服务器。菜单。 如果选择服务器,则MIME映射将应用于服务器上的每个网站。 如果您选择一个网站,它将只适用于一个网站。

  2. 接下来,选择&#34; MIME类型&#34;从IIS菜单:

  3. MIME Types Menu Item

    1. 在那里,点击&#34;添加...&#34;从右侧菜单。

    2. 在打开的对话框中,在MIME类型框的文件扩展名框.webmanifest中指定application/manifest+json

    3. Add MIME Type dialog box

      1. 点击&#34;确定&#34;。
      2. 恭喜;您刚刚在IIS上定义了.webmanifest的MIME类型。

答案 1 :(得分:20)

对于Azure,我将此添加为web.config

<?xml version="1.0"?>

<configuration>
    <system.webServer>
        <staticContent>
            <mimeMap fileExtension=".json" mimeType="application/json" />
            <mimeMap fileExtension=".webmanifest" mimeType="application/manifest+json" />
        </staticContent>
    </system.webServer>
</configuration> 

答案 2 :(得分:16)

对于使用ASP.NET Core(我使用2.1)的用户,您可以根据static files文档配置可以在应用程序Sub InputFormula() Set srcTable = ActiveSheet.ListObjects(1) fmtString = "=IF(MOD([@A],1)=0,SUM([B]),0)" Range(srcTable.Name & "[C]").Formula = fmtString End Sub 文件中提供的MIME类型:

Startup.cs

答案 3 :(得分:9)

更简单的解决方案是将清单文件重命名为site.webmanifest.json并链接为

 <link rel="manifest" href="site.webmanifest.json">

IIS应该已经具有.json文件的MIME类型 如果在不容易更改IIS设置的Azure上部署,这也很有帮助。

答案 4 :(得分:1)

添加到@Ben的answer中:如果您有SPA,则应将StaticFileOptions代码放入UseSpaStaticFiles()调用中:

FileExtensionContentTypeProvider provider = new FileExtensionContentTypeProvider();
provider.Mappings[".webmanifest"] = "application/manifest+json";

app.UseSpaStaticFiles(new StaticFileOptions()
{
    ContentTypeProvider = provider
});

答案 5 :(得分:0)

我发现IIS服务器在“请求筛选”功能中列出了“ .json”,表示不允许这样做。

enter image description here

删除该文件后即可提供文件。