Commit 735c2a0810cb0d6b75e0f3d0609356c26d05c69c
1 parent
734d70bb
v1.21.0.0
- WebApp info kiegészítésre került a w3wp.exe információkkal
Showing
3 changed files
with
93 additions
and
11 deletions
Show diff stats
Vrh.Log4Pro.MaintenanceConsole/Manager - WebApplicationManager.cs
... | ... | @@ -21,7 +21,6 @@ using System.Xml.Linq; |
21 | 21 | |
22 | 22 | namespace Vrh.Log4Pro.MaintenanceConsole.WebApplicationManagerNS |
23 | 23 | { |
24 | - #region WebApplicationManager | |
25 | 24 | public static class WebApplicationManager |
26 | 25 | { |
27 | 26 | internal const string XMLCONNECTIONSTRING = "config=MAINTENANCECONSOLE_WEBAPPLICATIONMANAGER;"; |
... | ... | @@ -600,6 +599,9 @@ namespace Vrh.Log4Pro.MaintenanceConsole.WebApplicationManagerNS |
600 | 599 | { |
601 | 600 | WebApplication wa = (obj as Menu.ExecutorParameter).Parameters as WebApplication; |
602 | 601 | var numofvd = wa.Xml_VirtualDirectoryList?.Count()??0; |
602 | + | |
603 | + //var numofwp = 0;if (wa.WorkerProcesses != null) { foreach (var wp in wa.WorkerProcesses) { numofwp++; if (wp.appdomains != null) { foreach (var ad in wp.appdomains) numofwp++; } } } | |
604 | + var numofwp= wa.WorkerProcesses?.Count() ?? 0; | |
603 | 605 | if (lineix == 0) |
604 | 606 | { |
605 | 607 | ColorConsole.WriteLine($"{wa.Xml_Description}", ConsoleColor.Black, ConsoleColor.White); |
... | ... | @@ -647,22 +649,44 @@ namespace Vrh.Log4Pro.MaintenanceConsole.WebApplicationManagerNS |
647 | 649 | ColorConsole.Write($", identity:"); |
648 | 650 | ColorConsole.WriteLine($"{wa.PoolAccount}", ConsoleColor.White); |
649 | 651 | } |
650 | - else if (5 <= lineix && lineix <= 5+numofvd) | |
652 | + else if (5 <= lineix && lineix < 5+numofvd) | |
651 | 653 | { |
652 | 654 | var elementindex = lineix - 5; |
653 | - if (numofvd==0 || elementindex > numofvd - 1) { ColorConsole.WriteLine(); } | |
655 | + var currentelement = wa.Xml_VirtualDirectoryList.ElementAt(elementindex); | |
656 | + ColorConsole.Write($"Virtual directory:"); | |
657 | + ColorConsole.Write($"{currentelement.VirtualPath}", ConsoleColor.Cyan); | |
658 | + ColorConsole.Write($", ("); | |
659 | + ColorConsole.Write($"{currentelement.PhysicalPath}", ConsoleColor.Cyan); | |
660 | + ColorConsole.WriteLine($")"); | |
661 | + } | |
662 | + else if (5+numofvd <= lineix && lineix < 5 + numofvd + numofwp) | |
663 | + { | |
664 | + var elementindex = lineix - (5 + numofvd); | |
665 | + if (numofwp == 0 || elementindex > numofwp - 1) { ColorConsole.WriteLine(); } | |
654 | 666 | else |
655 | 667 | { |
656 | - var currentelement = wa.Xml_VirtualDirectoryList.ElementAt(elementindex); | |
657 | - ColorConsole.Write($"Virtual directory:"); | |
658 | - ColorConsole.Write($"{currentelement.VirtualPath}", ConsoleColor.Cyan); | |
668 | + var currentelement = wa.WorkerProcesses.ElementAt(elementindex); | |
669 | + var currentelementislocallystored = currentelement.islocallystored ? "Locally stored" : "Not locally stored"; | |
670 | + ColorConsole.Write($"WorkerProcess id:"); | |
671 | + ColorConsole.Write($"{currentelement.pid}", ConsoleColor.Cyan); | |
659 | 672 | ColorConsole.Write($", ("); |
660 | - ColorConsole.Write($"{currentelement.PhysicalPath}", ConsoleColor.Cyan); | |
661 | - ColorConsole.WriteLine($")"); | |
673 | + ColorConsole.Write($"{currentelement.state}", ConsoleColor.Cyan); | |
674 | + ColorConsole.Write($", "); | |
675 | + ColorConsole.Write($"{currentelementislocallystored}", ConsoleColor.Cyan); | |
676 | + ColorConsole.Write($"); "); | |
677 | + foreach (var ad in currentelement.appdomains) | |
678 | + { | |
679 | + ColorConsole.Write($"[ViP:"); | |
680 | + ColorConsole.Write($"{ad.Item1},", ConsoleColor.Cyan); | |
681 | + ColorConsole.Write($"PhP:{ad.Item2}"); | |
682 | + ColorConsole.Write($"]"); | |
683 | + } | |
684 | + ColorConsole.WriteLine(); | |
662 | 685 | } |
663 | 686 | } |
664 | 687 | else |
665 | 688 | { |
689 | + ColorConsole.WriteLine(); | |
666 | 690 | return null; |
667 | 691 | } |
668 | 692 | return ""; |
... | ... | @@ -742,6 +766,11 @@ namespace Vrh.Log4Pro.MaintenanceConsole.WebApplicationManagerNS |
742 | 766 | wa.PoolState = "Unregistered/Unknown"; |
743 | 767 | wa.PoolAccount = ""; |
744 | 768 | } |
769 | + try | |
770 | + { | |
771 | + wa.WorkerProcesses = GetWorkerProcesses(wa); | |
772 | + } | |
773 | + catch { } | |
745 | 774 | return wa; |
746 | 775 | } |
747 | 776 | } |
... | ... | @@ -848,6 +877,32 @@ namespace Vrh.Log4Pro.MaintenanceConsole.WebApplicationManagerNS |
848 | 877 | #endregion private method:CommitChanges |
849 | 878 | |
850 | 879 | #region private methods: Get information (with no ServerManager parameter) |
880 | + public static List<MyWorkerProcess> GetWorkerProcesses(WebApplication wa) | |
881 | + { | |
882 | + using (ServerManager manager = new ServerManager()) | |
883 | + { | |
884 | + return manager.ApplicationPools.Where(p=>p.Name==wa.ApplicationPool.Name).SelectMany(pool => pool.WorkerProcesses).Select(wp=>new MyWorkerProcess(wp)).ToList(); | |
885 | + } | |
886 | + } | |
887 | + public class MyWorkerProcess | |
888 | + { | |
889 | + public string poolname; | |
890 | + public int pid; | |
891 | + public WorkerProcessState state; | |
892 | + public bool islocallystored; | |
893 | + public List<Tuple<string, string>> appdomains =new List<Tuple<string, string>>(); | |
894 | + public MyWorkerProcess(WorkerProcess wp) | |
895 | + { | |
896 | + poolname = wp.AppPoolName; | |
897 | + pid = wp.ProcessId; | |
898 | + state = wp.State; | |
899 | + islocallystored=wp.IsLocallyStored; | |
900 | + foreach (var ad in wp.ApplicationDomains) | |
901 | + { | |
902 | + appdomains.Add(Tuple.Create(ad.VirtualPath, ad.PhysicalPath)); | |
903 | + } | |
904 | + } | |
905 | + } | |
851 | 906 | public static string GetCurrentImpersonateIdentityInfo(WebApplication wa) |
852 | 907 | { |
853 | 908 | var filepath = wa.Xml_ImpersonateIdentityConfigFile; |
... | ... | @@ -1154,6 +1209,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.WebApplicationManagerNS |
1154 | 1209 | #endregion GetDefinitionList |
1155 | 1210 | } |
1156 | 1211 | #endregion WebApplicationManagerXmlProcessor class |
1212 | + | |
1157 | 1213 | #region WebApplication class |
1158 | 1214 | public class WebApplication : XmlLinqBase |
1159 | 1215 | { |
... | ... | @@ -1193,7 +1249,9 @@ namespace Vrh.Log4Pro.MaintenanceConsole.WebApplicationManagerNS |
1193 | 1249 | public Application Application; |
1194 | 1250 | public string ApplicationState; |
1195 | 1251 | public string ApplicationPath; |
1252 | + public List<WebApplicationManagerCore.MyWorkerProcess> WorkerProcesses; | |
1196 | 1253 | #endregion properties from environment |
1254 | + | |
1197 | 1255 | public WebApplication() { } |
1198 | 1256 | public WebApplication(XElement webappXml) |
1199 | 1257 | { |
... | ... | @@ -1420,9 +1478,9 @@ namespace Vrh.Log4Pro.MaintenanceConsole.WebApplicationManagerNS |
1420 | 1478 | } |
1421 | 1479 | } |
1422 | 1480 | #endregion XmlStructure |
1423 | - #endregion WebApplicationManager | |
1424 | 1481 | } |
1425 | 1482 | #endregion WebApplication class |
1483 | + | |
1426 | 1484 | #region VirtualDirectory class |
1427 | 1485 | #endregion VirtualDirectory class |
1428 | 1486 | } | ... | ... |
Vrh.Log4Pro.MaintenanceConsole/Program.cs
... | ... | @@ -37,6 +37,8 @@ namespace Vrh.Log4Pro.MaintenanceConsole |
37 | 37 | { |
38 | 38 | static void Main(string[] args) |
39 | 39 | { |
40 | + //TESTS.GetWorkingProcesses(); | |
41 | + //return; | |
40 | 42 | var forcedmodulekey = CommandLine.GetCommandLineArgument(args, CLP.CMD_MODULE); |
41 | 43 | var commandmode = !string.IsNullOrEmpty(forcedmodulekey); |
42 | 44 | var silentmode = commandmode && !string.IsNullOrEmpty(CommandLine.GetCommandLineArgument(args, CLP.CMD_SILENT, switchtype: true)); |
... | ... | @@ -88,6 +90,28 @@ namespace Vrh.Log4Pro.MaintenanceConsole |
88 | 90 | ColorConsole.PressAnykeyToContinue(); |
89 | 91 | } |
90 | 92 | } |
93 | + public static class TESTS | |
94 | + { | |
95 | + public static void GetWorkingProcesses() | |
96 | + { | |
97 | + using (ServerManager manager = new ServerManager()) | |
98 | + { | |
99 | + var workerprocesses = manager.ApplicationPools.SelectMany(pool => pool.WorkerProcesses); | |
100 | + var workerprocessesCount = workerprocesses.Count(); | |
101 | + Console.WriteLine($"Number of worker processes: {workerprocessesCount}"); | |
102 | + foreach (var wp in workerprocesses) | |
103 | + { | |
104 | + Console.WriteLine($"process AppPoolName: {wp.AppPoolName}, process ProcessId: {wp.ProcessId}, process State: {wp.State}, process IsLocallyStored: {wp.IsLocallyStored}"); | |
105 | + Console.WriteLine($" ApplicationDomains: {wp.ApplicationDomains.Count()}"); | |
106 | + foreach (var ad in wp.ApplicationDomains) | |
107 | + { | |
108 | + Console.WriteLine($" VirtualPath: {ad.VirtualPath}, PhysicalPath: {ad.PhysicalPath}"); | |
109 | + } | |
110 | + } | |
111 | + } | |
112 | + Console.ReadKey(); | |
113 | + } | |
114 | + } | |
91 | 115 | |
92 | 116 | #region MaintenanceConsoleXmlProcessor class |
93 | 117 | public class MaintenanceConsoleXmlProcessor : XmlParser | ... | ... |
Vrh.Log4Pro.MaintenanceConsole/Properties/AssemblyInfo.cs
... | ... | @@ -32,5 +32,5 @@ using System.Runtime.InteropServices; |
32 | 32 | // You can specify all the values or you can default the Build and Revision Numbers |
33 | 33 | // by using the '*' as shown below: |
34 | 34 | // [assembly: AssemblyVersion("1.0.*")] |
35 | -[assembly: AssemblyVersion("1.20.1.0")] | |
36 | -[assembly: AssemblyFileVersion("1.20.1.0")] | |
35 | +[assembly: AssemblyVersion("1.21.0.0")] | |
36 | +[assembly: AssemblyFileVersion("1.21.0.0")] | ... | ... |