Programowy restart aplikacji ASP.NET

0

Dzień dobry,

Czy istnieje jakiś sposób aby zrestartować aplikacje ASP.NET z poziomu kodu?

Pozdrawiam

0

Najprościej będzie chyba tak:

string path = System.Reflection.Assembly.GetExecutingAssembly().Location;
Process.Start(path);
0

Dostaje exception na start.process o treści: "Z określonym plikiem nie skojarzono dla tej operacji żadnej aplikacji"

0

Sprawdź co zwraca Ci pierwsze polecenie. W zmiennej "path" powinna być ścieżka do Twojego pliku ".exe".

Dla testów odpal sobie np notatnik:

Process.Start("notepad.exe");
0

Bo prawdopodobnie wywołujesz ten kod w assembly, które jest dll-ką, nie exe.

0

Tak scieżka jest do dll-ki.To jak to zrobić?

0

Zamiast GetExecutingAssembly() użyj GetEntryAssembly()

0

Z

 System.Reflection.Assembly.GetEntryAssembly()

dostaje null

0

A czemu w ogóle chcesz to zrobić? Może istnieje inny sposób na rozwiązanie Twojego problemu.

0

Masz to dyspozycji jeszcze metodę

System.Reflection.Assembly.GetCallingAssembly

Nigdy jej nie używałem, ale wydaje się że zwróci Ci "Asembly" które woła Twojego ".dll".
Zwróć jednak uwagę że możesz być np. 7 w kolejce, tj plik.exe->jakiś.dll->...->ten.dll.

assembly = System.Reflection.Assembly.GetCallingAssembly();
if (assembly != null)
  path = assembly.Location;
if (path != null)
  Process.Start(path)

Ogólnie to powinieneś pobrać "jakieś" Assembly, ustawić breakpointa i po prostu obejrzeć je pod debuggerem.

0
lmarek napisał(a):

Masz to dyspozycji jeszcze metodę

System.Reflection.Assembly.GetCallingAssembly

Nigdy jej nie używałem, ale wydaje się że zwróci Ci "Asembly" które woła Twojego ".dll".
Zwróć jednak uwagę że możesz być np. 7 w kolejce, tj plik.exe->jakiś.dll->...->ten.dll.

assembly = System.Reflection.Assembly.GetCallingAssembly();
if (assembly != null)
  path = assembly.Location;
if (path != null)
  Process.Start(path)

Ogólnie to powinieneś pobrać "jakieś" Assembly, ustawić breakpointa i po prostu obejrzeć je pod debuggerem.

Na start process dostaje exception "Z określonym plikiem nie skojarzono dla tej operacji żadnej aplikacji" a scieżka jest do mojej dll-ki

0
lmarek napisał(a):

Masz to dyspozycji jeszcze metodę

System.Reflection.Assembly.GetCallingAssembly

Nigdy jej nie używałem, ale wydaje się że zwróci Ci "Asembly" które woła Twojego ".dll".
Zwróć jednak uwagę że możesz być np. 7 w kolejce, tj plik.exe->jakiś.dll->...->ten.dll.

assembly = System.Reflection.Assembly.GetCallingAssembly();
if (assembly != null)
  path = assembly.Location;
if (path != null)
  Process.Start(path)

Ogólnie to powinieneś pobrać "jakieś" Assembly, ustawić breakpointa i po prostu obejrzeć je pod debuggerem.

Dostaje exception : "Z określonym plikiem nie skojarzono dla tej operacji żadnej aplikacji" a scieżka jest do mojej dll-ki

0

Dla potomnych:

ServerManager serverManager = new ServerManager();
            var site= serverManager.Sites["nnyazwa witry"];
            if (site != null)
            {
                if (site.State == ObjectState.Stopped)
                {
                    site.Start();
                }
                else
                {
                    site.Stop();
                    site.Start();
                }
            }
 

Trzeba dodac referencje do dll-ki Microsoft.Web.Adminstration

1 użytkowników online, w tym zalogowanych: 0, gości: 1