问题
I'm trying to move my old mvc5 project to mvc6. Old code was:
public string ContentType
{
get
{
if (!string.IsNullOrEmpty(FileName))
return MimeMapping.GetMimeMapping(FileName);
return null;
}
}
Error is
The name 'MimeMapping' does not exist in the current context
回答1:
The following code should work:
string contentType;
new FileExtensionContentTypeProvider().TryGetContentType(FileName, out contentType);
return contentType ?? "application/octet-stream";
回答2:
There is a NuGet package MimeTypes which works with .Net Core projects as an alternative to FileExtensionContentTypeProvider
. I'm not aware of any other mime-type resolver package, which works with .Net Core (at least so far).
The usage is simple:
string fileName = "trial.jpg";
string mime = MimeKit.MimeTypes.GetMimeType(fileName);
回答3:
System.Web is not moved to .NetCore because it relies too much on API's that are platform specific. You could take a look at Microsoft reference source:
https://github.com/Microsoft/referencesource/blob/master/System.Web/MimeMapping.cs
The code is subject to a MIT license.
来源:https://stackoverflow.com/questions/34131326/using-mimemapping-in-asp-net-5-vnext