古いmvc5プロジェクトをmvc6に移動しようとしています。古いコードは:
public string ContentType
{
get
{
if (!string.IsNullOrEmpty(FileName))
return MimeMapping.GetMimeMapping(FileName);
return null;
}
}
エラーは
「MimeMapping」という名前は現在のコンテキストに存在しません
次のコードが機能するはずです。
string contentType;
new FileExtensionContentTypeProvider().TryGetContentType(FileName, out contentType);
return contentType ?? "application/octet-stream";
NuGetパッケージ MimeTypes があり、FileExtensionContentTypeProvider
の代わりに.Net Coreプロジェクトで動作します。私は(少なくともこれまでのところ).Net Coreで動作する他のmimeタイプのリゾルバパッケージを知りません。
使い方は簡単です:
string fileName = "trial.jpg";
string mime = MimeKit.MimeTypes.GetMimeType(fileName);
System.Webは、プラットフォーム固有のAPIに依存しすぎるため、.NetCoreに移行しません。 Microsoftのリファレンスソースをご覧ください。
https://github.com/Microsoft/referencesource/blob/master/System.Web/MimeMapping.cs
コードにはMITライセンスが適用されます。