簡體   English   中英

C#回收IIS 6的應用程序池錯誤

[英]C# Recycle IIS 6's App Pool error

我想使用asp.net c#在Web應用程序中回收IIS 6的應用程序池。

protected void Page_Load(object sender, EventArgs e)
{
    //Recycle IIS 6's App Pool
    Recycle("localhost", "appPool_02");

}

void Recycle(string machine, string appPoolName)
{
    string path = "IIS://" + machine + "/W3SVC/AppPools/" + appPoolName;
    DirectoryEntry w3svc = new DirectoryEntry(path);
    w3svc.Invoke("Recycle", null);
}

“ appPool_02”是另一個應用程序池名稱,上面的代碼正在“ appPool_01”上運行。

當我使用上面的代碼時,它發生了一個錯誤:

(來自HRESULT的異常:0x80070005(E_ACCESSDENIED))說明:執行當前Web請求期間發生未處理的異常。 請查看堆棧跟蹤,以獲取有關錯誤及其在代碼中起源的更多信息。

異常詳細信息:System.UnauthorizedAccessException:拒絕訪問。(來自HRESULT的異常:0x80070005(E_ACCESSDENIED))

沒有授權ASP.NET訪問請求的資源。 考慮將資源的訪問權限授予ASP.NET請求標識。 ASP.NET具有基本進程標識(在IIS 5上通常為{MACHINE} \\ ASPNET或在IIS 6上通常為Network Service),如果應用程序沒有模擬,則使用該標識。 如果應用程序通過進行模擬,則身份將是匿名用戶(通常為IUSR_MACHINENAME)或經過身份驗證的請求用戶。

要授予ASP.NET對文件的訪問權限,請在資源管理器中右鍵單擊該文件,選擇“屬性”,然后選擇“安全性”選項卡。 單擊“添加”以添加適當的用戶或組。 突出顯示ASP.NET帳戶,然后選中所需訪問權限的框。

源錯誤:

Line 72:         string path = "IIS://" + machine + "/W3SVC/AppPools/" + appPoolName;
Line 73:         DirectoryEntry w3svc = new DirectoryEntry(path);
Line 74:         w3svc.Invoke("Recycle", null);
Line 75:     }
Line 76: 

源文件:e:\\ iProject \\ iProgress \\ iProgress \\ T \\ T.aspx.cs行:74

堆棧跟蹤:

[UnauthorizedAccessException:拒絕訪問。(來自HRESULT的異常:0x80070005(E_ACCESSDENIED))

[TargetInvocationException:調用的目標已引發異常。] System.DirectoryServices.DirectoryEntry.Invoke(字符串methodName,Object [] args)+238 WE_T.Recycle(字符串機器,字符串appPoolName)在e:\\ iProject \\ iProgress中\\ iProgress \\ T \\ T.aspx.cs:74 WE_T.Page_Load(對象發送者,EventArgs e)在e:\\ iProject \\ iProgress \\ iProgress \\ T \\ T.aspx.cs:38 System.Web.Util.CalliHelper.EventArgFunctionCaller (IntPtr fp,Object o,Object t,EventArgs e)+14 System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender,EventArgs e)+35 System.Web.UI.Control.OnLoad(EventArgs e)+99 System。 Web.UI.Control.LoadRecursive()+50 System.Web.UI.Page.ProcessRequestMain(布爾值includeStagesBeforeAsyncPoint,布爾值includeStagesAfterAsyncPoint)+627

您最初的帖子在計算機名稱中的“ localhost”之后有一個空格。 如果刪除它會怎樣?

另外,您需要確保運行此代碼的ASP.NET用戶進程具有適當的特權才能重新啟動其他應用程序池。 您可以使用模擬來執行此操作(錯誤),也可以按照例外中的說明進行操作,以允許用戶處理對另一個應用程序的適當權限。 池。

我通過將AppPool設置為“本地系統”來使其工作。 但這可能會引起一些安全問題。 有更好的解決方案嗎?

ASP.NET中的文本到語音-拒絕訪問...該怎么辦?

引發異常,因為運行該應用程序的用戶沒有管理員權限

Exception from HRESULT: 0x80070005 (E_ACCESSDENIED)

如果要執行此操作,則需要為用戶賦予管理員特權或創建一個單獨的應用程序,該應用程序監視應用程序的狀態並在需要時進行回收。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM