web-dev-qa-db-ja.com

ASP.NET 5(vNext)でMimeMappingを使用する

古いmvc5プロジェクトをmvc6に移動しようとしています。古いコードは:

public string ContentType
{
    get
    {
        if (!string.IsNullOrEmpty(FileName))
            return MimeMapping.GetMimeMapping(FileName);
        return null;
    }
}

エラーは

「MimeMapping」という名前は現在のコンテキストに存在しません

enter image description here

30
Sauron

次のコードが機能するはずです。

string contentType;
new FileExtensionContentTypeProvider().TryGetContentType(FileName, out contentType);
return contentType ?? "application/octet-stream";
52
Mark G

NuGetパッケージ MimeTypes があり、FileExtensionContentTypeProviderの代わりに.Net Coreプロジェクトで動作します。私は(少なくともこれまでのところ).Net Coreで動作する他のmimeタイプのリゾルバパッケージを知りません。

使い方は簡単です:

string fileName = "trial.jpg";
string mime = MimeKit.MimeTypes.GetMimeType(fileName);
11
Matyas

System.Webは、プラットフォーム固有のAPIに依存しすぎるため、.NetCoreに移行しません。 Microsoftのリファレンスソースをご覧ください。

https://github.com/Microsoft/referencesource/blob/master/System.Web/MimeMapping.cs

コードにはMITライセンスが適用されます。

2
SynerCoder