【发布时间】: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。网站将关闭,很快将再次启动。我知道,我相信有更好的方法:)
-
没错,我可以这样做,但我更想寻找一种可以在历史上查看的方式,例如在日志中
-
很公平。您可以在事件查看器中查看它。查看我的答案以获取更多详细信息。