用途:在 .NET 应用中集中处理 MIME 类型判断,避免在各处散落字符串映射表,适用于上传校验、下载响应头、存储元数据和附件处理。
主要能力:通过 MimeHelper 按文件名、URL 和复合扩展名查询 MIME 类型,例如 GetMimeType("report.pdf")、GetMimeType("archive.tar.gz")、GetMimeType("https://cdn.example.test/avatar.png?v=2");可按 MIME 反查扩展名 GetExtensions("image/jpeg");可用 TryGetMimeTypeInfoByExtension 获取注册来源信息(如 IsIanaRegistered);支持运行时注册与注销自定义映射 RegisterMimeType/UnregisterMimeType;提供基于内容前缀的校验 GetMimeTypeByContent 与 MatchesMimeTypeByContent、MatchesExtensionByContent。
安装:dotnet add package ManagedCode.MimeTypes --version 10.1.1,或在集中管理版本时使用 <PackageReference Include="ManagedCode.MimeTypes" Version="10.1.1" />。当前包面向 .NET 8、9、10。
使用方式:在启动时集中注册产品专属映射;未知扩展名回退到 MimeHelper.DefaultMimeType(初始为 application/octet-stream),可用 SetDefaultMimeType 修改;需要依赖注入或测试替换时使用 MimeHelper.Instance(IMimeHelper),小型确定性场景可用静态调用;关注首次请求延迟时可在启动时调用 MimeHelper.WarmUp()。
限制:运行时注册只影响扩展名与反向查找,不生成完整 IANA 注册元数据;基于内容的检查只识别已知前缀并恢复可定位流的位置,不是完整文档解析器、恶意软件扫描器,也不能证明文件其余部分有效;不得仅凭 MIME 分类做授权、文件执行、解压或活动内容渲染。10.1.1 中目录 JSON 由源生成器在构建时处理,生成的 MIME 常量不初始化注册表,首次查找才初始化冻结索引。目录更新后需重跑产品专属映射测试。