iisexpresstray
是IIS Express附带的帮助应用程序,显示有关运行此服务器实例的信息。我想学习它是如何工作的,所以我用ILSpy反编译了这个.NET程序。特别是,我注意到一段运行系统命令的代码,即netsh http show servicestate view=requestq
:
string text;
using (Process process = new Process()) {
process.StartInfo.FileName = "netsh";
process.StartInfo.Arguments = "http show servicestate view=requestq";
process.StartInfo.CreateNoWindow = true;
process.StartInfo.UseShellExecute = false;
process.StartInfo.RedirectStandardOutput = true;
process.Start();
text = process.StandardOutput.ReadToEnd();
process.WaitForExit();
}
到目前为止没什么特别的,但是这段代码解析了这个命令的输出,期望找到像"Process IDs:"
和"Registered URLs:"
这样的英语子串,只有当命令的输出不是&#时39; t本地化。即使在本地化的Windows上,这也会有所作为。此外,iisexpresstray
依赖于此行为。
那么这是如何工作的?当我简单地将这个代码段复制到在本地化Windows上运行的LINQPad时,我预计会看到本地化结果。设置Thread.CurrentThread.CurrentCulture
不会改变任何内容。