Sử dụng Static Files trong ASP.NET Core
Bài viết này chúng ta sẽ học cách làm việc với Static File trong ASP.NET Core. ASP.NET Core có khả năng duyệt file tĩnh như là HTML, CSS, hình ảnh và Javacript trực tiếp từ client mà không đi qua MVC Middleware.
Sử dụng Static Files
Các file như HTML, CSS, ảnh, JavaScript được gọi là file tĩnh hay static files. Có hai cách để bạn có thể duyệt các file tĩnh này trong ASP.NET Core MVC. Trực tiếp hoặc thông qua Controller MVC. Bài này chúng ta sẽ học cách duyệt trực tiếp. Các file tĩnh đó nó có nội dung không thay đổi động khi người dùng request tới nó. Vì thế nó không cần phải tạo bất cứ yêu cầu nào thông qua MVC Middleware (hay cách khác là request pipeline) mà chỉ cần trả nguyên nội dung về thôi. ASP.NET Core cung cấp một Middleware có sẵn chỉ phục vụ việc này.
Tạo mới project
Mở Visual Studio 2017 và tạo mới một project sử dụng Empty Project. Tên của Project là StaticFiles. Bạn có thể tham khảo bài viết hướng dẫn Bắt đầu khởi tạo ứng dụng ASP.NET Core. Chạy project và kiểm tra mọi thứ ok.
Static file middleware
Chúng ta cũng đã nói về Middleware và Request Pipeline trong ASP.NET Core trước đây. Để duyệt các static file chúng ta cần thêm StaticFiles Middleware vào. Middleware này có sẵn trong thư viện Microsoft.AspNetCore.StaticFiles. Nó không cần cài đặt gì vì nó là một phần của Microsoft.AspNetCore.App. Chúng ta có thể cấu hình ASP.NET Core để duyệt file tĩnh sử dụng extension method UseStaticFiles.
Mở file Startup.cs và đặt app.UseStaticFiles() trước app.Run:
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseStaticFiles();
app.Run(async (context) =>
{
await context.Response.WriteAsync("Hello World!");
});
}
Chú ý là app.Run là middleware ngắt. Nếu bạn đặt UseStaticFiles trước app.Run thì nó sẽ không được thực thi.
Static file ở đâu?
Theo quy tắc thì static file sẽ được lưu trong web root ở thư mục (<content-root>/wwwroot). Bạn có thể thay đổi nếu muốn
Content root
Content root là thư mục gốc của ứng dụng. Tất cả các file của ứng dụng như view, controller, pages, javascript hay bất cứ file nào thuộc về ứng dụng.
Content root tương tự như thư mục của ứng dụng để có thể thực thi hosting app.
Webroot
Web root thư mục trong content root nơi mà nó để các tài nguyên tĩnh như CSS, Javascript, hình ảnh..
Tạo mới static file
Để thêm static file, ví dụ bạn thêm test.html. Chọn thư mục wwwroot, click chuột phải và chọn AddàAdd new Item. Chọn HTML Page và đặt tên nó là test.html.
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
</head>
<body>
<p> Hello world from test.html</p>
</body>
</html>

Bảo mật static file
Giờ hãy chạy project và nhìn thấy dòng chữ “Hello World”. Giờ bạn có thể chỉnh sửa URL thêm vào test.html và refresh bạn sẽ thấy dòng chữ “Hello world from test.html”
Static file middleware không kiểm tra việc người dùng có được quyền xem file hay không. Nếu bạn chỉ muốn những người có quyền truy cập file thì bạn nên lưu nó bên ngoài thư mục wwwroot và bạn có thể cho phép duyệt file theo quyền với Controller/Action trả về FileResult.

UseStaticFile là một middleware ngắt
Static file là một Middleware ngắt. Nếu file tìm thấy nó sẽ trả về file và ngắt request pipeline. Nó sẽ gọi middleware kế tiếp chỉ khi nó không tìm thấy file.
Làm sao để đặt Content rooth path và web rooth path
Như đã nói đến ở trên thì các static file được đặt ở web root. Chúng ta có thể đặt content root là thư mục hiện tại. Nó đã được cài đặt mặc định trong phương thức CreateDefaultBuilder của Program.cs. CreateDefaultBuilder là một helper class chứa các logic làm việc với cấu hình.
Nó cài đặt content root của ứng dụng bằng cách gọi extension method UseContentRoot:
.UseContentRoot(Directory.GetCurrentDirectory())
Theo quy tắc thì webroot được đặt cho thư mục wwwroot. Bạn có thể thay đổi bằng cách sử dụng phương thức UseWebRoot.
Trích nguồn từ: https://www.tektutorialshub.com/
Tags:
Bài viết liên quan
Xây dựng menu đa cấp với ASP.NET Core MVC
Cách xây dựng menu đa cấp sử dụng đệ quy trong ASP.NET Core MVC
Đọc thêm
Tìm hiểu về ABP Framework, một framework mã nguồn mở trên .NET
ABP Framework là một framework hoàn chỉnh để xây dựng ứng dụng web hiện đại bằng cách áp dụng các best practice và tiêu chuẩn trong phát triển phần mềm.
Đọc thêm
Tìm lỗi ứng dụng ASP.NET Core trên Windows Server sử dụng stdout log
Một số lỗi trong lúc khởi động hệ thống ASP.NET Core trên Windows Server mà chúng ta chưa rõ nguyên nhân tại sao ứng dụng không hoạt động. Vậy bạn có thể dùng đểns stdout để chẩn đoán lỗi.
Đọc thêmVòng đời của Dependency Injection: Transient, Singleton và Scoped
Hiểu về vòng đời của các service được tạo sử dụng Dependency Injection là rất quan trọng trước khi sử dụng chúng.
Đọc thêm
Cơ chế Dependency Injection trong ASP.NET Core
Dependency Injection giờ đã trở thành thành phần chính thức mặc định của ASP.NET Core.
Đọc thêm
Unobtrusive Client Validation trong ASP.NET Corre
Trong bài viết này chúng ta sẽ thực hiện validation phía client sử dụng Javascript.
Đọc thêm
Validation Tag Helper trong ASP.NET Core
ASP.NET cung cấp các tag helper liên quan đến hiển thị validation message cho người dùng.
Đọc thêm
Model Validation trong ASP.NET Core
Bài viết này chúng ta sẽ học về cơ chế Model Validation.
Đọc thêm
Cơ chế Model Binding: Truyền dữ liệu từ View lên Controller
Trong cơ chế Model Binding của ASP.NET Core chúng ta sẽ học cách làm sao để truyền dữ liệu từ View lên Controller.
Đọc thêm
Environment Tag Helper trong ASP.NET Core
Environment tag helper hỗ trợ tạo ra các nội dung phụ thuộc vào biến quy định môi trường trong ASP.NET Core.
Đọc thêm