C# 使用C在IIS6上回收应用程序池
我正试图通过web应用程序以编程方式回收IIS6上的应用程序池。我在网上到处搜索,找到了一系列解决方案,其中大部分涉及模仿,但似乎都不起作用。我遇到的最常见错误是E_ACCESSDENIED,尽管输入了有效的用户名和密码。有人能给我指出正确的方向吗?也许这个问题对你有帮助。IIS6也有几种解决方案:C# 使用C在IIS6上回收应用程序池,c#,iis-6,C#,Iis 6,我正试图通过web应用程序以编程方式回收IIS6上的应用程序池。我在网上到处搜索,找到了一系列解决方案,其中大部分涉及模仿,但似乎都不起作用。我遇到的最常见错误是E_ACCESSDENIED,尽管输入了有效的用户名和密码。有人能给我指出正确的方向吗?也许这个问题对你有帮助。IIS6也有几种解决方案: 我想,你能做的最好的事情就是决定采用一种具体的方法,然后当你遇到异常时,用你的方法的源代码问一个具体的问题。否则,回答您的问题就很难了。对于您试图从ASP.NET运行需要管理权限的进程的情况,我使用
我想,你能做的最好的事情就是决定采用一种具体的方法,然后当你遇到异常时,用你的方法的源代码问一个具体的问题。否则,回答您的问题就很难了。对于您试图从ASP.NET运行需要管理权限的进程的情况,我使用的解决方案如下: 作为自托管WCF服务,编写您需要完成的任何操作。最好是Http REST服务,因此即使只使用浏览器进行测试,也很容易调用 确保您的服务是使用管理员帐户运行的。您可以使用任务计划程序确保服务始终在运行,也可以使用管理员帐户运行。 使用WCF客户端从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对您的服务进行调用,从而执行您的流程
希望所有这些都有意义?出于好奇,您为什么试图强制重新启动应用程序池?请确保您模拟的用户对IIS计算机具有管理权限。