c# - 如何验证我的 C# 代码在管理员模式下运行 IISRESET 命令

标签 c# iisreset

我创建了一项 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);

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

Listener Adapter protocol 'net.tcp' successfully connected to Windows Process Activation Service.

Listener Adapter protocol 'net.pipe' successfully connected to Windows Process Activation Service.

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

IIS start command received from user testing\neil.kenny. The logged data is the status code.

这对我来说看起来不错,但我仍然不确定它是否真的进行了重置。它可能只是运行 iisreset 命令,然后输出访问被拒绝的消息。

如何正确验证这一点?

最佳答案

如果您想手动测试:

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

enter image description here

到底要寻找什么:

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

关于c# - 如何验证我的 C# 代码在管理员模式下运行 IISRESET 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15782151/

相关文章:

iis - 如果我想使用Microsoft.Web.Administration,等效于IISReset

iis - 如果 CPU 使用率高于 90%,则执行 IISRESET

c# - 如何在 Unity3D 中将类对象转换为 JSON 字符串?

c# - 如何确定 Windows CE 设备上的可用空间?

c# - StreamWriter 和 Encoding.UTF8.GetBytes 产生不同的结果

c# - 替换/删除代码或 SQL 中的文本

c# - 在分组列表框 View 中拉伸(stretch)标题宽度

c# - 如何从 Windows 7 客户端计算机在远程 Windows 服务器上重新启动 IIS?

.net - 以编程方式停止和启动 IIS。快速安全的方式

c# - 远程机器上的 iisreset (C#)