- vừa được xem lúc

IIS.Dashboard - Quản lý IIS bằng trình duyệt tại sao không?

0 0 10

Người đăng: Nguyễn Xuân Luân

Theo Viblo Asia

Chào các bạn. Hôm nay mình sẽ thảo luận với các bạn về 1 chủ đề mới: Quản lý IIS bằng trình duyệt.

1. Bài toán đặt ra

Trong 1 công ty có nhiều team cùng phát triển và dùng chung 1 con window server để deploy các trang nội bộ lên 1 IIS chung. Bộ phận IT sẽ giới hạn số người truy cập vào cùng 1 lúc . Vấn đề đặt ra là có rất nhiều service với nhiều team khác nhau nên tại một thời điểm có thể có rất nhiều người muốn truy cập vào để deploy, restart, chỉnh cấu hình....

2. Ý tưởng

Ý tưởng của mình là xây 1 con website có thể thao tác với IIS ở server. Khi đó người dùng chỉ cần đăng nhập vào nó dựa trên quyền được cấp để thao tác với IIS.

3. Giải pháp

Mình sẽ dựng 1 con web sử dụng asp.net core razor page. Để thao tác với IIS mình sẽ sử dụng thư viện Microsoft.Web.Administration. Database là sqlite vì chỉ cần 1 file nhỏ đơn giản.

4. Bắt đầu code thôi

4.1. Quản lý website

Tạo 1 class website để hiển thị thông tin các website có trên IIS

 public class Website { public long Id { get; set; } public string Name { get; set; } public string State { get; set; } public int Port { get; set; } } 

Lấy tất cả website:

 public void GetAllSites() { using (ServerManager server = new ServerManager()) { this.Websites = new List<Website>(); foreach (var item in server.Sites) { var web = new Website() { Name = item.Name, State = item.State.ToString(), Id = item.Id }; foreach (var b in item.Bindings) { web.Port =b.EndPoint.Port; break; } this.Websites.Add(web); } } }

Start /Stop website:

 public void OnPostStart(long site) { using (ServerManager server = new ServerManager()) { foreach (var item in server.Sites) { if(item.Id == site && (item.State == ObjectState.Stopped || item.State == ObjectState.Stopping)) { item.Start(); break; } } } this.GetAllSites(); } public void OnPostStop(long site) { using (ServerManager server = new ServerManager()) { foreach (var item in server.Sites) { if (item.Id == site && (item.State == ObjectState.Started || item.State == ObjectState.Starting)) { item.Stop(); break; } } } this.GetAllSites(); } 

Các thao tác khác mình chưa làm đến các bạn có thể chờ mình cập nhật vào github phía dưới. image.png

4.2. Quản lý pool

Lấy tất cả các pool:

public class AppPool { public string Name { get; set; } public string State { get; set; } } public void GetAllPools() { using (ServerManager server = new ServerManager()) { this.AppPools = new List<AppPool>(); foreach (var item in server.ApplicationPools) { this.AppPools.Add(new AppPool() { Name = item.Name, State =item.State.ToString() }); } } }

Start/ Stop pool:

public void OnPostStop(string pool) { using (ServerManager server = new ServerManager()) { foreach (var item in server.ApplicationPools) { if(item.Name == pool) { item.Stop(); } } } this.GetAllPools(); } public void OnPostStart(string pool) { using (ServerManager server = new ServerManager()) { foreach (var item in server.ApplicationPools) { if (item.Name == pool) { item.Start(); } } } this.GetAllPools(); }

Các thao tác khác mình chưa làm đến các bạn có thể chờ mình cập nhật vào github phía dưới. image.png

4.3. Các phần khác

Ngoài ra còn các phần mình dự kiến sẽ có trong dự án này như login, phân quyền user .... Các bạn có thể theo dõi tiến độ của nó tại github của mình iis.dashboard

Bình luận

Bài viết tương tự

- vừa được xem lúc

Mẫu thiết kế Generic và Non-Generic Repository trong C#

Mẫu thiết kế repository được sử dụng để tạo ra một lớp abstract giữa lớp DAL và lớp BL để thực hiện các thao tác CRUD (Create, Read, Update, Delete) đối với cơ sở dữ liệu bên dưới. Chúng ta cũng đã th

0 0 28

- vừa được xem lúc

Tính Linh Hoạt và Bảo Mật của .NET: Làm Thế Nào Chúng Tạo Ra Ứng Dụng Mạnh Mẽ?

Ở thời đại công nghệ ngày càng phát triển như hiện nay, việc chọn lựa một nền tảng phát triển ứng dụng phù hợp không chỉ cần xem xét khả năng phát triển, mà còn cần đảm bảo tính bảo mật tối đa. Micros

0 0 29

- vừa được xem lúc

Làm thế nào .NET giúp đơn giản hóa phát triển ứng dụng đa nền tảng?

Ngày nay, khi số lượng các thiết bị di động và hệ điều hành không ngừng tăng lên, việc phát triển ứng dụng đa nền tảng đã trở thành một yêu cầu không thể thiếu trong ngành công nghệ. Một trong những c

0 0 20

- vừa được xem lúc

Cách .NET giúp tăng cường hiệu suất và tối ưu hóa quá trình phát triển phần mềm

NET là một nền tảng phát triển phần mềm từ Microsoft, cung cấp cho lập trình viên một môi trường mạnh mẽ để xây dựng các ứng dụng đa nền tảng, từ web đến mobile, từ desktop đến cloud. Trong bài viết n

0 0 20

- vừa được xem lúc

Tìm hiểu về HTTP/1.x, HTTP/2 và HTTP/3?

Vào một ngày đẹp trời năm 2021, mình có ứng tuyển vào một công ty C..., công ty này chỉ có một vòng duy nhất phỏng vấn. Khi mình đang demo con app sịn sò của mình và request ra sao thì xuất hiện 3 req

0 0 18

- vừa được xem lúc

Vấn đề Memory Leak và OutOfMemory trong C#

Hôm nay mình có được một anh Tech Lead của một công ty hỏi về vấn đề Memory Leak và OutOfMemory trong C#, giờ chúng ta sẽ tìm hiểu về hai khái niệm này nhé. .

0 0 19