Использование MimeMapping в ASP.NET Core

Я пытаюсь перенести свой старый проект mvc5 на ядро ​​asp net. Старый код был:

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

Ошибка

Имя MimeMapping не существует в текущем контексте.

введите описание изображения здесь


person Sauron    schedule 07.12.2015    source источник


Ответы (3)


Следующий код должен работать:

string contentType;
new FileExtensionContentTypeProvider().TryGetContentType(FileName, out contentType);
return contentType ?? "application/octet-stream";
person Mark G    schedule 09.03.2016
comment
@NickMuller поддерживается ли System.Net.Mime в мире netcore? - person Brennen Sprimont; 28.10.2016
comment
@BrennenSprimont: Нет, это не так. Работал над проектом, ориентированным на .NET 4.x, и, думаю, я запутался. Я удалил комментарий, потому что больше не мог его редактировать. - person Nicky Muller; 31.10.2016
comment
Примечание. В ASPNETCORE 2.1 этот код требует добавления пакета Nuget: «Microsoft.AspNetCore.StaticFiles» и «using Microsoft.AspNetCore.StaticFiles;» декларация. - person Sid James; 09.01.2019
comment
Примечание. FileExtensionContentTypeProvider обеспечивает сопоставление mimetype только для подмножества mimetype по сравнению с MimeMapping.GetMimeMapping (). Например. текущие типы Visio, такие как .vsdx, .vsdm, ... не могут быть сопоставлены с ним! - person MDummy; 05.10.2020

Существует пакет NuGet MimeTypes, который работает с проектами .Net Core в качестве альтернативы FileExtensionContentTypeProvider. Я не знаю ни одного другого пакета преобразователя mime-типа, который работает с .Net Core (по крайней мере, пока).

Использование простое:

string fileName = "trial.jpg";
string mime = MimeKit.MimeTypes.GetMimeType(fileName);
person Matyas    schedule 28.09.2016
comment
Просто = хорошо! Сначала попробовал ответ Марка, но вам нужно сослаться на другую dll. В этом подходе есть только одноцелевой файл C #, который добавляется как файл содержимого и на который можно ссылаться, как показано. - person Avner; 02.11.2020

System.Web не перемещается в .NetCore, потому что он слишком полагается на API, зависящие от платформы. Вы можете взглянуть на справочный источник Microsoft:

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

На код распространяется лицензия MIT.

person SynerCoder    schedule 07.12.2015
comment
После поиска альтернативных ответов на этот вопрос их нет. Единственный лучший способ - это автоматически сгенерировать код C # на основе статического списка. - person Maxime Rouiller; 07.12.2015