我正在尝试通过Web应用程序以编程方式回收IIS6上的应用程序池。我在网上搜索过,发现了一堆解决方案(大多数涉及模仿),但似乎都没有。尽管输入了有效的用户名和密码,但我得到的最常见错误是E_ACCESSDENIED。任何人都可以指出我正确的方向吗?
答案 0 :(得分:0)
也许这个问题可以帮到你。有几种解决方案(也适用于IIS6):
恕我直言,你能做的最好的事情就是决定采用具体的方法然后当你遇到异常时,用你的方法的源代码问一个具体的问题。否则,回答你的问题非常有效。
答案 1 :(得分:0)
我用于此类事情的解决方案(您尝试从需要管理权限的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来调用您的服务,然后执行您的流程。
希望所有这些都有意义吗?