Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/269.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用C在IIS6上回收应用程序池_C#_Iis 6 - Fatal编程技术网

C# 使用C在IIS6上回收应用程序池

C# 使用C在IIS6上回收应用程序池,c#,iis-6,C#,Iis 6,我正试图通过web应用程序以编程方式回收IIS6上的应用程序池。我在网上到处搜索,找到了一系列解决方案,其中大部分涉及模仿,但似乎都不起作用。我遇到的最常见错误是E_ACCESSDENIED,尽管输入了有效的用户名和密码。有人能给我指出正确的方向吗?也许这个问题对你有帮助。IIS6也有几种解决方案: 我想,你能做的最好的事情就是决定采用一种具体的方法,然后当你遇到异常时,用你的方法的源代码问一个具体的问题。否则,回答您的问题就很难了。对于您试图从ASP.NET运行需要管理权限的进程的情况,我使用

我正试图通过web应用程序以编程方式回收IIS6上的应用程序池。我在网上到处搜索,找到了一系列解决方案,其中大部分涉及模仿,但似乎都不起作用。我遇到的最常见错误是E_ACCESSDENIED,尽管输入了有效的用户名和密码。有人能给我指出正确的方向吗?

也许这个问题对你有帮助。IIS6也有几种解决方案:


我想,你能做的最好的事情就是决定采用一种具体的方法,然后当你遇到异常时,用你的方法的源代码问一个具体的问题。否则,回答您的问题就很难了。

对于您试图从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计算机具有管理权限。