C# 如何在.NET Core中没有文件扩展名的文件上设置MIME类型?

C# 如何在.NET Core中没有文件扩展名的文件上设置MIME类型?,c#,.net-core,mime-types,webassembly,C#,.net Core,Mime Types,Webassembly,我已经得到了一些文件来处理WebAssembly模块,该模块应该设置为作为应用程序/八位字节流加载 我在Startup.cs中找到了用于设置MIME类型的文档,并在WebAssembly模块本身中实现了这一点 不幸的是,还有三个文件应该作为应用程序/八位字节流加载,它们没有文件扩展名,例如file1-shard1。我已经尝试过直接用wilcards对它们进行寻址,但它们在Firefox的网络选项卡中仍然显示为Type=html 有人知道如何正确设置这些文件的MIME类型吗 //为Web程序集设置

我已经得到了一些文件来处理WebAssembly模块,该模块应该设置为作为应用程序/八位字节流加载

我在Startup.cs中找到了用于设置MIME类型的文档,并在WebAssembly模块本身中实现了这一点

不幸的是,还有三个文件应该作为应用程序/八位字节流加载,它们没有文件扩展名,例如
file1-shard1
。我已经尝试过直接用wilcards对它们进行寻址,但它们在Firefox的网络选项卡中仍然显示为Type=html

有人知道如何正确设置这些文件的MIME类型吗

//为Web程序集设置FileExtension内容提供程序
var provider=new FileExtensionContentTypeProvider();
provider.Mappings[“.wasm”]=“应用程序/wasm”;
//为碎片文件设置MIME类型
provider.Mappings[“file1-shard1”]=“应用程序/八位字节流”;
provider.Mappings[“*shard1*”]=“应用程序/八位字节流”;
provider.Mappings[“*”]=“应用程序/八位字节流”;
provider.Mappings[“]”=“应用程序/八位字节流”;
app.UseStaticFiles(新的StaticFileOptions
{
ContentTypeProvider=提供程序
});

不能使用
文件扩展名ContentTypeProvider
执行此操作,因为如果文件没有扩展名,它会在内部失败


您可能需要实现一个自定义的
IContentTypeProvider
,或者设置
StaticFileOptions。DefaultContentType

您不能使用
FileExtensionContentTypeProvider
,因为如果文件没有扩展名,它会在内部失败


您可能需要实现一个自定义的
IContentTypeProvider
,或者设置
StaticFileOptions.DefaultContentType

,感谢yaakov在这方面的领导。除了DefaultContentType之外,您还需要告诉应用程序服务在包含这些文件的文件夹中提供ServeUnknownFileType

app.UseStaticFiles()下面的代码中
是使wwwroot文件夹工作的现有代码。此代码应添加到Startup.cs

然后我为WebAssembly文件设置映射。然后,这将用于该特定文件夹的app.UseStaticFiles()的新迭代,该文件夹包括默认内容类型和ServeUnknowFileTypes

它并不完美,因为ServeUnknownFileTypes存在一些安全风险,但在本例中,它仅限于单个文件夹

//wwwroot的默认选项
app.UseStaticFiles();
//为Web程序集设置文件扩展内容提供程序
var provider=new FileExtensionContentTypeProvider();
provider.Mappings[“.wasm”]=“应用程序/wasm”;
app.UseStaticFiles(新的StaticFileOptions
{
ContentTypeProvider=提供程序,
ServeUnknownFileTypes=true,
DefaultContentType=“应用程序/八位字节流”,
FileProvider=新的物理FileProvider(
Path.Combine(Directory.GetCurrentDirectory(),“wwwroot/WebAssemFiles”),
RequestPath=“/WebAssemFiles”
});

感谢雅科夫在这方面的领导。除了DefaultContentType之外,您还需要告诉应用程序服务在包含这些文件的文件夹中提供ServeUnknownFileType

app.UseStaticFiles()下面的代码中
是使wwwroot文件夹工作的现有代码。此代码应添加到Startup.cs

然后我为WebAssembly文件设置映射。然后,这将用于该特定文件夹的app.UseStaticFiles()的新迭代,该文件夹包括默认内容类型和ServeUnknowFileTypes

它并不完美,因为ServeUnknownFileTypes存在一些安全风险,但在本例中,它仅限于单个文件夹

//wwwroot的默认选项
app.UseStaticFiles();
//为Web程序集设置文件扩展内容提供程序
var provider=new FileExtensionContentTypeProvider();
provider.Mappings[“.wasm”]=“应用程序/wasm”;
app.UseStaticFiles(新的StaticFileOptions
{
ContentTypeProvider=提供程序,
ServeUnknownFileTypes=true,
DefaultContentType=“应用程序/八位字节流”,
FileProvider=新的物理FileProvider(
Path.Combine(Directory.GetCurrentDirectory(),“wwwroot/WebAssemFiles”),
RequestPath=“/WebAssemFiles”
});