我有一个Blazor Server 6.0应用程序,其中有下载.msg文件的链接。
我已设置IIS为MIME类型提供服务,尝试应用程序/octet-stream和应用程序/vnd.ms-outlook(并重新启动IIS)
我也试着在web.config中加入staticcontent标记,就像这里建议的那样:.msg file gives download error
显然,在我的program.cs中,我有app.useStaticFiles();
我尝试将.msg放在非blazor应用程序中,它们工作正常,因此我认为与IIS无关
那么,为什么我不能下载(或在Outlook中自动打开)这种类型的文件,而其他(docx,pdf,zip等)都可以?
1条答案
按热度按时间alen0pnh1#
ASP.NET Core --在服务器端--还需要知道它必须服务的文件。您可以启用服务所有未知的文件类型(我宁愿不包括相关代码,因为这是一个主要的安全风险),或者您可以添加自己的附加Map,如下所示:
更多信息请参见官方文档:https://learn.microsoft.com/en-us/aspnet/core/fundamentals/static-files?view=aspnetcore-7.0#fileextensioncontenttypeprovider
此外,Blazor Server还注册了用于提供静态文件的自定义选项(比如
.server.js
,它与.js
不同)。它没有直接公开为公共API来配置,但是您可以查看这里的源代码,了解AddServerSideBlazor
扩展方法的实际功能。这里的解决方案依赖于您调用UseStaticFiles
,而不显式指定选项,以便它可以从DI检索StaticFilesOptions
示例。掌握了这些知识后,您可以覆盖已配置的选项示例,如下所示:
这将配置DI中注册的已初始化选项示例(在其上发生所有其他配置之后,因此
PostConfigure
)。请注意,如果您出于任何原因决定使用不同的
IContentTypeProvider
,则也需要修改上面的不安全类型转换。