2015-12-07 29 views
18

Tôi đang cố gắng di chuyển dự án mvc5 cũ của mình thành mvc6. Cũ mã đã:Sử dụng MimeMapping trong ASP.NET 5 (vNext)

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

Lỗi là

Tên 'MimeMapping' không tồn tại trong bối cảnh hiện nay

enter image description here

Trả lời

2

System.Web không chuyển đến .NetCore vì nó dựa quá nhiều vào API là nền tảng cụ thể. Bạn có thể có một cái nhìn tại nguồn tài liệu tham khảo Microsoft:

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

Mã này là đối tượng của một giấy phép MIT.

+0

Sau khi tìm kiếm câu trả lời thay thế vào đó, chẳng có ai. Cách tốt hơn duy nhất là tự động tạo mã C# dựa trên danh sách tĩnh. –

22

Các mã sau đây nên làm việc:

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

@NickMuller là 'System.Net.Mime' được hỗ trợ trong thế giới netcore? –

+1

@BrennenSprimont: Không, không phải vậy. Đã làm việc tại một dự án nhắm mục tiêu .NET 4.x, và tôi đoán tôi đã nhầm lẫn. Tôi đã xóa nhận xét vì tôi không thể chỉnh sửa nhận xét đó nữa. –

6

Có một gói NuGet MimeTypes mà làm việc với các dự án cốt lõi Net như một thay thế cho FileExtensionContentTypeProvider. Tôi không biết về bất kỳ gói giải quyết loại mime nào khác, hoạt động với .Net Core (ít nhất là cho đến nay).

Việc sử dụng rất đơn giản:

string fileName = "trial.jpg"; 
string mime = MimeKit.MimeTypes.GetMimeType(fileName); 
Các vấn đề liên quan