2015-12-07 15 views
18

Sto provando a spostare il mio vecchio progetto mvc5 su mvc6. vecchio codice era:Utilizzo di MimeMapping in ASP.NET 5 (vNext)

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

errore è

Il nome 'MimeMapping' non esiste nel contesto corrente

enter image description here

risposta

2

System.Web non viene spostato . NetCore perché si basa troppo su API che sono specifiche della piattaforma. Si potrebbe dare un'occhiata alla fonte di riferimento Microsoft:

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

Il codice è soggetto a una licenza MIT.

+0

Dopo cerca di risposte alternative a quella, non c'è nessuno. L'unico modo migliore sarebbe generare automaticamente codice C# basato su un elenco statico. –

22

Il seguente codice dovrebbe funzionare:

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

@NickMuller è 'System.Net.Mime' supportato nel mondo netcore? –

+1

@BrennenSprimont: No, non lo è. Stavo lavorando a un progetto che ha come target .NET 4.x, e credo di essermi confuso. Ho eliminato il commento, perché non potevo più modificarlo. –

6

V'è un pacchetto NuGet MimeTypes che funziona con i progetti fondamentali .Net come alternativa al FileExtensionContentTypeProvider. Non sono a conoscenza di nessun altro pacchetto resolver di tipo mime, che funziona con .Net Core (almeno finora).

L'utilizzo è semplice:

string fileName = "trial.jpg"; 
string mime = MimeKit.MimeTypes.GetMimeType(fileName); 
Problemi correlati