[英]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.