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,7 +21,6 @@ using System.Xml.Linq; | ||
21 | 21 | ||
22 | namespace Vrh.Log4Pro.MaintenanceConsole.WebApplicationManagerNS | 22 | namespace Vrh.Log4Pro.MaintenanceConsole.WebApplicationManagerNS |
23 | { | 23 | { |
24 | - #region WebApplicationManager | ||
25 | public static class WebApplicationManager | 24 | public static class WebApplicationManager |
26 | { | 25 | { |
27 | internal const string XMLCONNECTIONSTRING = "config=MAINTENANCECONSOLE_WEBAPPLICATIONMANAGER;"; | 26 | internal const string XMLCONNECTIONSTRING = "config=MAINTENANCECONSOLE_WEBAPPLICATIONMANAGER;"; |
@@ -600,6 +599,9 @@ namespace Vrh.Log4Pro.MaintenanceConsole.WebApplicationManagerNS | @@ -600,6 +599,9 @@ namespace Vrh.Log4Pro.MaintenanceConsole.WebApplicationManagerNS | ||
600 | { | 599 | { |
601 | WebApplication wa = (obj as Menu.ExecutorParameter).Parameters as WebApplication; | 600 | WebApplication wa = (obj as Menu.ExecutorParameter).Parameters as WebApplication; |
602 | var numofvd = wa.Xml_VirtualDirectoryList?.Count()??0; | 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 | if (lineix == 0) | 605 | if (lineix == 0) |
604 | { | 606 | { |
605 | ColorConsole.WriteLine($"{wa.Xml_Description}", ConsoleColor.Black, ConsoleColor.White); | 607 | ColorConsole.WriteLine($"{wa.Xml_Description}", ConsoleColor.Black, ConsoleColor.White); |
@@ -647,22 +649,44 @@ namespace Vrh.Log4Pro.MaintenanceConsole.WebApplicationManagerNS | @@ -647,22 +649,44 @@ namespace Vrh.Log4Pro.MaintenanceConsole.WebApplicationManagerNS | ||
647 | ColorConsole.Write($", identity:"); | 649 | ColorConsole.Write($", identity:"); |
648 | ColorConsole.WriteLine($"{wa.PoolAccount}", ConsoleColor.White); | 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 | var elementindex = lineix - 5; | 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 | else | 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 | ColorConsole.Write($", ("); | 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 | else | 687 | else |
665 | { | 688 | { |
689 | + ColorConsole.WriteLine(); | ||
666 | return null; | 690 | return null; |
667 | } | 691 | } |
668 | return ""; | 692 | return ""; |
@@ -742,6 +766,11 @@ namespace Vrh.Log4Pro.MaintenanceConsole.WebApplicationManagerNS | @@ -742,6 +766,11 @@ namespace Vrh.Log4Pro.MaintenanceConsole.WebApplicationManagerNS | ||
742 | wa.PoolState = "Unregistered/Unknown"; | 766 | wa.PoolState = "Unregistered/Unknown"; |
743 | wa.PoolAccount = ""; | 767 | wa.PoolAccount = ""; |
744 | } | 768 | } |
769 | + try | ||
770 | + { | ||
771 | + wa.WorkerProcesses = GetWorkerProcesses(wa); | ||
772 | + } | ||
773 | + catch { } | ||
745 | return wa; | 774 | return wa; |
746 | } | 775 | } |
747 | } | 776 | } |
@@ -848,6 +877,32 @@ namespace Vrh.Log4Pro.MaintenanceConsole.WebApplicationManagerNS | @@ -848,6 +877,32 @@ namespace Vrh.Log4Pro.MaintenanceConsole.WebApplicationManagerNS | ||
848 | #endregion private method:CommitChanges | 877 | #endregion private method:CommitChanges |
849 | 878 | ||
850 | #region private methods: Get information (with no ServerManager parameter) | 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 | public static string GetCurrentImpersonateIdentityInfo(WebApplication wa) | 906 | public static string GetCurrentImpersonateIdentityInfo(WebApplication wa) |
852 | { | 907 | { |
853 | var filepath = wa.Xml_ImpersonateIdentityConfigFile; | 908 | var filepath = wa.Xml_ImpersonateIdentityConfigFile; |
@@ -1154,6 +1209,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.WebApplicationManagerNS | @@ -1154,6 +1209,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.WebApplicationManagerNS | ||
1154 | #endregion GetDefinitionList | 1209 | #endregion GetDefinitionList |
1155 | } | 1210 | } |
1156 | #endregion WebApplicationManagerXmlProcessor class | 1211 | #endregion WebApplicationManagerXmlProcessor class |
1212 | + | ||
1157 | #region WebApplication class | 1213 | #region WebApplication class |
1158 | public class WebApplication : XmlLinqBase | 1214 | public class WebApplication : XmlLinqBase |
1159 | { | 1215 | { |
@@ -1193,7 +1249,9 @@ namespace Vrh.Log4Pro.MaintenanceConsole.WebApplicationManagerNS | @@ -1193,7 +1249,9 @@ namespace Vrh.Log4Pro.MaintenanceConsole.WebApplicationManagerNS | ||
1193 | public Application Application; | 1249 | public Application Application; |
1194 | public string ApplicationState; | 1250 | public string ApplicationState; |
1195 | public string ApplicationPath; | 1251 | public string ApplicationPath; |
1252 | + public List<WebApplicationManagerCore.MyWorkerProcess> WorkerProcesses; | ||
1196 | #endregion properties from environment | 1253 | #endregion properties from environment |
1254 | + | ||
1197 | public WebApplication() { } | 1255 | public WebApplication() { } |
1198 | public WebApplication(XElement webappXml) | 1256 | public WebApplication(XElement webappXml) |
1199 | { | 1257 | { |
@@ -1420,9 +1478,9 @@ namespace Vrh.Log4Pro.MaintenanceConsole.WebApplicationManagerNS | @@ -1420,9 +1478,9 @@ namespace Vrh.Log4Pro.MaintenanceConsole.WebApplicationManagerNS | ||
1420 | } | 1478 | } |
1421 | } | 1479 | } |
1422 | #endregion XmlStructure | 1480 | #endregion XmlStructure |
1423 | - #endregion WebApplicationManager | ||
1424 | } | 1481 | } |
1425 | #endregion WebApplication class | 1482 | #endregion WebApplication class |
1483 | + | ||
1426 | #region VirtualDirectory class | 1484 | #region VirtualDirectory class |
1427 | #endregion VirtualDirectory class | 1485 | #endregion VirtualDirectory class |
1428 | } | 1486 | } |
Vrh.Log4Pro.MaintenanceConsole/Program.cs
@@ -37,6 +37,8 @@ namespace Vrh.Log4Pro.MaintenanceConsole | @@ -37,6 +37,8 @@ namespace Vrh.Log4Pro.MaintenanceConsole | ||
37 | { | 37 | { |
38 | static void Main(string[] args) | 38 | static void Main(string[] args) |
39 | { | 39 | { |
40 | + //TESTS.GetWorkingProcesses(); | ||
41 | + //return; | ||
40 | var forcedmodulekey = CommandLine.GetCommandLineArgument(args, CLP.CMD_MODULE); | 42 | var forcedmodulekey = CommandLine.GetCommandLineArgument(args, CLP.CMD_MODULE); |
41 | var commandmode = !string.IsNullOrEmpty(forcedmodulekey); | 43 | var commandmode = !string.IsNullOrEmpty(forcedmodulekey); |
42 | var silentmode = commandmode && !string.IsNullOrEmpty(CommandLine.GetCommandLineArgument(args, CLP.CMD_SILENT, switchtype: true)); | 44 | var silentmode = commandmode && !string.IsNullOrEmpty(CommandLine.GetCommandLineArgument(args, CLP.CMD_SILENT, switchtype: true)); |
@@ -88,6 +90,28 @@ namespace Vrh.Log4Pro.MaintenanceConsole | @@ -88,6 +90,28 @@ namespace Vrh.Log4Pro.MaintenanceConsole | ||
88 | ColorConsole.PressAnykeyToContinue(); | 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 | #region MaintenanceConsoleXmlProcessor class | 116 | #region MaintenanceConsoleXmlProcessor class |
93 | public class MaintenanceConsoleXmlProcessor : XmlParser | 117 | public class MaintenanceConsoleXmlProcessor : XmlParser |
Vrh.Log4Pro.MaintenanceConsole/Properties/AssemblyInfo.cs
@@ -32,5 +32,5 @@ using System.Runtime.InteropServices; | @@ -32,5 +32,5 @@ using System.Runtime.InteropServices; | ||
32 | // You can specify all the values or you can default the Build and Revision Numbers | 32 | // You can specify all the values or you can default the Build and Revision Numbers |
33 | // by using the '*' as shown below: | 33 | // by using the '*' as shown below: |
34 | // [assembly: AssemblyVersion("1.0.*")] | 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")] |