Как я могу правильно обслуживать IIS.webmanifest на моем веб-сайте?
Генератор Favicon собирает пакет для использования веб-мастерами, чтобы значки были доступны для многих различных устройств. Страница содержит файл site.manifest
который site.manifest
следующий тег в документе веб-страницы <head>
:
<link rel="manifest" href="site.webmanifest">
Согласно Mozilla: "Манифест веб-приложения предоставляет информацию о приложении (например, имя, автора, значок и описание) в текстовом файле JSON. Целью манифеста является установка веб-приложений на домашний экран устройства, предоставляя пользователи с более быстрым доступом и более богатым опытом. "
К сожалению, если вы используете Microsoft Internet Information Services (IIS), вы получите ошибку 404.3, если попытаетесь получить доступ к файлу site.webmanifest
.
Точное сообщение об ошибке выглядит следующим образом: "Запрашиваемая вами страница не может быть обработана из-за конфигурации расширения. Если страница является скриптом, добавьте обработчик. Если файл должен быть загружен, добавьте карту MIME".
Как правильно обслуживать файлы site.webmanifest
в IIS?
Ответы
Ответ 1
По умолчанию IIS не обслуживает файлы, с которыми в его основных настройках (IIS) не связана карта MIME.
Чтобы решить эту проблему, вам необходимо сопоставить .webmanifest
файла .webmanifest
с соответствующим типом MIME.
Для этого откройте IIS и выполните следующие действия;
-
В левой части выберите ваш веб-сайт или весь сервер в меню "Подключения". Если вы выберете сервер, ваше сопоставление MIME будет применяться ко всем веб-сайтам на сервере. Если вы выберете веб-сайт, он будет применяться только к одному веб-сайту.
-
Далее выберите "Типы MIME" из меню IIS:
![MIME Types Menu Item]()
-
Оказавшись там, нажмите "добавить..." в правом меню.
-
В открывшемся диалоговом окне укажите .webmanifest
в поле расширения имени файла application/manifest+json
в поле MIME-типа.
![Add MIME Type dialog box]()
- Нажмите "ОК".
Поздравляем; Вы только что определили тип MIME для .webmanifest
в IIS.
Ответ 2
Для 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>
Ответ 3
Для тех, кто использует ASP.NET Core (я использую 2.1), вы можете настроить типы MIME, которые могут обслуживаться в файле Startup.cs
приложения согласно статическим файлам документов:
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
FileExtensionContentTypeProvider provider = new FileExtensionContentTypeProvider();
provider.Mappings[".webmanifest"] = "application/manifest+json";
app.UseStaticFiles(new StaticFileOptions()
{
ContentTypeProvider = provider
});
app.UseMvc();
}
Ответ 4
Более простым решением является переименование файла манифеста в site.webmanifest.json и ссылка на него
<link rel="manifest" href="site.webmanifest.json">
В IIS уже должен быть тип MIME для файлов .json. Это также полезно при развертывании в Azure, где не так просто изменить настройки IIS.
Ответ 5
Добавление к ответу @Ben: если у вас есть SPA, вы должны поместить код StaticFileOptions в вызов UseSpaStaticFiles():
FileExtensionContentTypeProvider provider = new FileExtensionContentTypeProvider();
provider.Mappings[".webmanifest"] = "application/manifest+json";
app.UseSpaStaticFiles(new StaticFileOptions()
{
ContentTypeProvider = provider
});