Windows注册表中的Mime类型

aca*_*dia 4 c# windows mime-types

在我使用C#构建的Windows服务中,我尝试根据文件扩展名设置mime类型,如下所示

static string GetMimeType(string fileName)
        {
            string mimeType = "application/unknown";
            string ext = Path.GetExtension(fileName).ToLower();

            Microsoft.Win32.RegistryKey regKey = Microsoft.Win32.Registry.ClassesRoot.OpenSubKey(ext);

            if (regKey != null && regKey.GetValue("Content Type") != null)
                mimeType = regKey.GetValue("Content Type").ToString();

            return mimeType;
        } 
Run Code Online (Sandbox Code Playgroud)

在生产服务器上,由于显而易见的原因,我们没有安装Acrobat或word.我该如何解决这个问题?还有其他设置mime类型的方法吗?如果不是如何在生产服务器上创建这些mime类型而不必安装这些软件.

提前致谢

Rup*_*Rup 9

您可以简单地为这些类型创建注册表项以供您的代码读取

  • 在注册表中转到HKEY_LOCAL_MACHINE\Software\Classes(HKCR的中心部分)
  • 右键单击Classes,New Key - 将其命名为.pdf
  • 右键单击右侧,新字符串 - "内容类型","application/pdf"

或者您可以找到安装了Acrobat的计算机,然后使用regedit将.pdf密钥导出到可以在服务器上导入的注册表脚本.您最终会得到许多脚本:您可以使用记事本一起编辑它们,但确保在保存时不要更改编码 - 它必须是Unicode!

您可以同样在应用程序中添加映射列表,但IIS在没有内容类型时不会提供静态内容,因此您可能应该将它们添加到注册表中,以防您需要提供静态PDF.