nik*_*eem 4 progressive-web-apps asp.net-core angular asp.net-core-3.0
我正在尝试在 ASP.NET Core 3 中创建一个 Angular SPA。所以我开始了一个新项目,使用了 Angular 模板并将所有包更新到 Angular 8.2.9 版。到目前为止一切顺利,获得了一个很好的到 Azure 的 CI/CD 管道,网站运行起来很吸引人。
但是,现在我正在尝试向应用程序添加 PWA 功能。所以我根据 angular (ng add @angular/pwa) 的文档添加了 PWA,一切似乎都很好。有一个不错的 manifest.webmanifest 文件,所有预期的更改都按预期应用。但是,当我运行该事物并开始审核时,使 PWA 可安装的要求失败了。
我得到的错误: - 此页面由 Service Worker 控制,但是没有找到 start_url,因为没有获取清单。- 失败:未获取清单。
看起来清单文件确实被提取了,但是 MIME 类型有问题(text/html)。欢迎在这里提出任何建议...
nik*_*eem 10
找到了!事实上,ASP.NET Core 使用错误的内容类型提供 manifest.webmanifest 文件实际上是问题所在。要解决此问题,请移动启动类的 configure 方法并创建一个新的 FileExtensionContentTypeProvider。然后还为具有 webmanifest 扩展名的文件添加映射,并告诉它以 application/manifest+json 文件的形式提供这些文件。
var provider = new FileExtensionContentTypeProvider();
provider.Mappings[".webmanifest"] = "application/manifest+json";
Run Code Online (Sandbox Code Playgroud)
然后向下滚动,如果你(像我一样)选择了 Angular 项目模板,你会发现这段代码:
app.UseStaticFiles();
if (!env.IsDevelopment())
{
app.UseSpaStaticFiles();
}
Run Code Online (Sandbox Code Playgroud)
现在对于 UseStaticFiles 和 UseSpaStaticFiles,您需要添加文件扩展名内容类型提供程序,以便为文件提供正确的内容类型,如下所示:
app.UseStaticFiles(new StaticFileOptions
{
ContentTypeProvider = provider
});
if (!env.IsDevelopment())
{
app.UseSpaStaticFiles(new StaticFileOptions
{
ContentTypeProvider = provider
});
}
Run Code Online (Sandbox Code Playgroud)
差不多就是这样……你现在可以开始了!
| 归档时间: |
|
| 查看次数: |
1928 次 |
| 最近记录: |