如何在 Blazor 应用程序中加载 .gltf

How to load .gltf in a Blazor application

我正在尝试使用 three.js 将 .gltf 模型加载到我的 Blazor 应用程序中。 但是服务器不提供此类文件。 我知道必须添加 MIME 类型,但由于某些原因,无法使用 Blazor Web 应用程序完成此操作,因为 Startup.cs 中的 'app' 变量是 IComponentsApplicationBuilder 的一个实例。谁能帮我解决这个问题。

IIS 和 IIS Express 将不会提供具有未知扩展名的文件。在错误控制台中,您会看到 404 (Not Found),这意味着文件丢失,或者文件的 MIME 类型未注册。

我建议您尝试将 web.config 文件添加到应用程序的根目录,其中包含以下内容:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <staticContent>
            <remove fileExtension=".gltf" />
            <mimeMap fileExtension=".gltf" mimeType="model/gltf+json" />
            <remove fileExtension=".glb" />
            <mimeMap fileExtension=".glb" mimeType="model/gltf-binary" />
            <remove fileExtension=".bin" />
            <mimeMap fileExtension=".bin" mimeType="application/octet-stream" />
        </staticContent>
    </system.webServer>
</configuration>

<remove ... /> 语句用于避免与发生在父文件夹或根级别或系统级别的任何 MIME 类型注册发生任何可能的冲突。 remove总是安全的,但是添加一个已经存在的是配置错误。

这里是对 glTF Mime Type 定义位置的引用。

某些版本的 IIS Express 将忽略 web.config 中的 MIME 类型。如果发生这种情况,上述文件可能无法工作。在这种情况下,您可能必须直接编辑 IIS Express 配置文件,以添加上面显示的信息。检查 this SO answer 以了解如何找到该配置文件。

web.config.

没必要乱来

您只需从 Program.cs 注入 StaticFileOptions

using Microsoft.AspNetCore.StaticFiles;


...


builder.Services.Configure<StaticFileOptions>(options =>
{
    options.ContentTypeProvider = new FileExtensionContentTypeProvider
    {
        Mappings =
        {
            [".gltf"] = "model/gltf+json",
            [".glb"] = "model/gltf-binary",
            [".bin"] = "application/octet-stream"
        }
    };
});

带有替代选项的完整文档:

https://docs.microsoft.com/en-us/aspnet/core/blazor/fundamentals/static-files?view=aspnetcore-6.0#blazor-server-file-mappings-and-static-file-options