[英]Recycle App Pool on IIS6 using C#
我正在嘗試通過Web應用程序以編程方式在IIS6上回收應用程序池。 我在網上搜索了所有內容,發現了一堆解決方案(大多數涉及模擬),但似乎都沒有。 盡管輸入了有效的用戶名和密碼,但我遇到的最常見錯誤是E_ACCESSDENIED。 有人能指出我正確的方向嗎?
也許這樣的問題可以幫助您。 有幾種解決方案(也適用於IIS6):
恕我直言,您最好的辦法是決定采用一種具體的方法,然后在遇到異常時,向您的方法的源代碼提出一個具體的問題。 否則,回答您的問題非常有用。
我用於此類事情的解決方案(在此處嘗試從ASP.NET運行需要管理特權的進程)是:
無論我試圖從ASP.NET應用程序中運行哪個“進程”,它始終有效。
現在,有關詳細信息(代碼),請讓我知道是否需要幫助。 下面的代碼是您在控制台應用程序中擁有的代碼,以便使其成為自托管的WCF服務。
在這種情況下,它是在端口7654上偵聽的Http服務。
static void Main(string[] args)
{
var webServiceHhost = new WebServiceHost(typeof(AppCmdService), new Uri("http://localhost:7654"));
ServiceEndpoint ep = webServiceHhost.AddServiceEndpoint(typeof(AppCmdService), new WebHttpBinding(), "");
var serviceDebugBehavior = webServiceHhost.Description.Behaviors.Find<ServiceDebugBehavior>();
serviceDebugBehavior.HttpHelpPageEnabled = false;
webServiceHhost.Open();
Console.WriteLine("Service is running");
Console.WriteLine("Press enter to quit ");
Console.ReadLine();
webServiceHhost.Close();
}
AppCmdService是一個WCF服務類,看起來像這樣(以我為例)。 就您而言,您可能不需要服務的回應。 就我而言,我得到了Json的回應。 您要執行的操作的實際實現顯然會有所不同。 但是我假設您已經解決了這一問題。 因此,只需從此處調用該類的方法即可。
[ServiceContract]
public class AppCmdService
{
[WebGet(UriTemplate = "/GetCurrentExcutingRequests/?", ResponseFormat= WebMessageFormat.Json)]
[OperationContract]
public IEnumerable<ExecutingRequestJson> GetCurrentExcutingRequests()
{
return CurrentExecutingRequestJsonProvider.GetCurrentExecutingRequests("localhost");
}
}
在ASP.NET方面,您實際上並不需要WCF客戶端。 您所需要的只是對服務進行http調用的一種方法。 因此,您可以簡單地使用HttpWebRequest來調用您的服務,從而執行您的過程。
希望所有這些都有意義嗎?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.