【问题标题】:How to verify my C# code run an IISRESET command in administrator mode如何验证我的 C# 代码在管理员模式下运行 IISRESET 命令
【发布时间】:2013-03-24 19:29:38
【问题描述】:

我创建了一个 Windows 服务来检查数据库中的错误,如果出现特定的错误,我希望它执行 IISRESET 命令。

问题是,如果我在没有提升权限的情况下运行 IISRESET 命令,那么它实际上不会进行重置。所以我的代码可以做所有我想做的事情,但我不确定IISRESET 命令是否以管理员身份运行,我不知道如何验证。

这是我的代码

        ErrorCheckerEventLog.WriteEntry("Performing IISReset", EventLogEntryType.Warning);
        Process process = new Process();
        process.StartInfo.Verb = "runas";
        process.StartInfo.FileName = "iisreset.exe";
        process.StartInfo.UseShellExecute = true;
        process.StartInfo.CreateNoWindow = false;
        process.StartInfo.RedirectStandardError = false;
        process.StartInfo.RedirectStandardOutput = false;
        process.Start();
        process.WaitForExit();
        ErrorCheckerEventLog.WriteEntry("IISReset finished", EventLogEntryType.Information);

在应用程序事件日志中,我得到了这些:

侦听器适配器协议“net.tcp”成功连接到 Windows 进程激活服务。

侦听器适配器协议“net.pipe”成功连接到 Windows 进程激活服务。

在系统事件日志中我得到这些:

从用户 testing\neil.kenny 收到 IIS 启动命令。记录的数据是状态码。

在我看来一切都很好,但我仍然不确定它是否真的进行了重置。它可能只是运行 iisreset 命令,然后输出拒绝访问消息。

如何正确验证这一点?

【问题讨论】:

  • 您要手动验证吗?还是从编程的角度?
  • 要么,手动就可以了
  • 我首先想到的是保持浏览器打开并重置 IIS 上的任何站点。一直按 F5。网站将关闭,很快将再次启动。我知道,我相信有更好的方法:)
  • 没错,我可以这样做,但我更想寻找一种可以在历史上查看的方式,例如在日志中
  • 很公平。您可以在事件查看器中查看它。查看我的答案以获取更多详细信息。

标签: c# iisreset


【解决方案1】:

只是一个想法...根据您的要求,您可以执行类似...

1。 调用驻留在您编写的 iis 实例上托管的站点上的网页或 wcf 端点,以将某些内容置于应用程序状态。

2。 运行您的代码。

3。 使用参数再次调用它,告诉它检索应用程序变量,如果它为 null 并且需要一段时间,该应用程序可能由于 iisreset 而重新加载。

如果您的代码与盒子上托管的应用程序无关,那就不理想了,所以我想......为什么不直接检索该事件日志信息?

有一个例子:Read event log in C# ...问题,诚然是一个非常简单的问题,但您正在查看一个最近的特定时间段,并且从最近的时间读取日志,从而呈现您的搜索速度非常快(例如,应该在最繁忙的服务器上的前 100 个事件中)。

【讨论】:

    【解决方案2】:

    如果您想手动测试

    • 我首先想到的是保持浏览器打开并重置 IIS 上的任何站点。一直按 F5。网站将关闭,很快将再次启动。
    • 签入事件查看器并查找指示 IIS 已重新启动的事件条目(检查 系统 日志)。这个question 可能会有所帮助。在这里你有一张照片。一图胜千言:

    具体要寻找什么:

    • 多个事件表明某些服务已停止。来源是服务控制管理器。在其中寻找一条“万维网发布服务进入停止状态”
    • 来自源 IIS-IISReset 的事件,内容为 “从用户 xxxx 收到 IIS 停止命令”
    • 多个事件表明某些服务已启动。来源是服务控制管理器。其中寻找一条“万维网发布服务进入运行状态”
    • 来自源 IIS-IISReset 的事件,内容为 “从用户 xxxx 收到 IIS 启动命令”

    【讨论】:

    • 啊,如果出现了 IIS-IISReset 那么重置成功了吗?或者它只是意味着它被尝试过
    • 我已经编辑了问题以表明您应该寻找什么。如果您仔细阅读事件,您将清楚地看到它是否已重新启动。如果不确定,请从提升的 cmd 为自己设置一个 IISReset 并检查您的日志。
    • 谢谢,正是我想要的,它成功地进行了重置:)
    • 酷。今天给我一些业力:)
    猜你喜欢
    • 1970-01-01
    • 2021-06-14
    • 2015-12-16
    • 2018-02-18
    • 2016-10-08
    • 1970-01-01
    • 1970-01-01
    • 2019-10-15
    • 1970-01-01
    相关资源
    最近更新 更多