12 dicembre 2022 10:08
Mime Type in Blazor Server e ASP.NET
Mi è capitato di dover gestire nella nostra Intranet (scritta in Blazor Server) dei link a file .msg ovvero mail salvate da Outlook in questo formato.
Normalmente per estensioni non gestite by default come questa se si tenta il download riceviamo in faccia un bel 404 ma basta aggiungere il mime type a IIS e tutto si risolve.
Purtroppo per le app ASP.NET Core non basta ma, come spiegano i docs ufficiali, ci vogliono anche questi 2 passi nel program.cs
var provider = new FileExtensionContentTypeProvider();
provider.Mappings[".msg"] = "application/vnd.ms-outlook";
// al posto di app.UseStaticFiles();
app.UseStaticFiles(new StaticFileOptions()
{
ContentTypeProvider = provider
});
Se però facciamo questo in una app Blazor SERVER si bloccano anche i file .js rendendo impossibile il caricamento del _framework/blazor.server.js e quindi non funziona più tutto il motore di update dinamico della UI via SignalR.
Ill modo giusto è invece configurare il builder in questo modo:
builder.Services.PostConfigure<StaticFileOptions>(o =>
{
((FileExtensionContentTypeProvider)o.ContentTypeProvider).Mappings[".msg"] = "application/vnd.ms-outlook";
});
Github repo qui.