Commit 735c2a0810cb0d6b75e0f3d0609356c26d05c69c

Authored by Schwirg László
1 parent 734d70bb

v1.21.0.0

- WebApp info kiegészítésre került a w3wp.exe információkkal
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")]
... ...