Hàm Recycle Pool cho C# và VB.net

00:02 27/05/2021 70

Nhiều thanh niên code hay for vô tận mà quên break thì kèm thêm cái hàm này cho chắc cú nhé. Lâu lâu thằng Pool IIS nó lăn ra chết thì viết thêm cái hàm này cho đỡ phải vào server để recycling

Các thanh niên viết bằng C# thì dùng đoạn này

/// 
/// Recycles a web site Application Pool (including the current web site).
/// Requires to reference Microsoft.Web.Administration and System.Web.Hosting.
/// IMPORTANT: The IIS user requires extended permissions to recycle application pool(s).
/// 
/// The site name: leave it NULL to recycle the current site's App Pool.
/// TRUE if the site's App Pool has been recycled; FALSE if no site has been found with the given name.
public static bool RecycleApplicationPool(string siteName = null)
{
    // EDIT: thanks to Emir Krkic for the suggestion below! 
    // ref.: https://www.ryadel.com/en/asp-net-c-recycle-net-web-applications-app-pool-programmatically-iis/#comment-1552
    // if (siteName == null) siteName = HostingEnvironment.ApplicationHost.GetSiteName();
    if (siteName == null) siteName = System.Web.Hosting.HostingEnvironment.SiteName;
    using (ServerManager iisManager = new ServerManager())
    {
        SiteCollection sites = iisManager.Sites;
        foreach (Site site in sites)
        {
            if (site.Name == siteName)
            {
                iisManager.ApplicationPools[site.Applications["/"].ApplicationPoolName].Recycle();
                return true;
            }
        }
    }
    return false;
}

Còn các thanh niên còn trẻ măng như mình, thích code Vb.net thì dùng đoạn này

    Public Shared Function RecycleApplicationPool(ByVal siteName As String) As Boolean
        If siteName Is Nothing Then siteName = System.Web.Hosting.HostingEnvironment.SiteName

        Using iisManager As ServerManager = New ServerManager()
            Dim sites As SiteCollection = iisManager.Sites

            For Each site As Microsoft.Web.Administration.Site In sites

                If site.Name = siteName Then
                    iisManager.ApplicationPools(site.Applications("/").ApplicationPoolName).Recycle()
                    Return True
                End If
            Next
        End Using

        Return False
    End Function

Chỗ này mình xin phép giải thích tý cho nó hoành tráng: 

  • siteName: Tức là cái tên Website mà bạn đặt ở trong IIS nhé

 

Lưu ý, 2 thằng này đều phải Add reference Microsoft.Web.Administration vào Project nhé

Còn không biết add thì xem mình hướng dẫn dưới đây nhé

B1. Chuột phải vào cái project --> chọn Add --> Referecen...

B2: Xem cái hình bên dưới

Hàm Recycle Pool cho C và VBnet
Hàm Recycle Pool cho C# và VB.net

Còn gọi nó ra thì