Programowy restart aplikacji ASP.NET

Programowy restart aplikacji ASP.NET
K2
  • Rejestracja:ponad 13 lat
  • Ostatnio:ponad 10 lat
  • Postów:142
0

Dzień dobry,

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

Pozdrawiam

edytowany 1x, ostatnio: kornik280
LM
  • Rejestracja:ponad 10 lat
  • Ostatnio:ponad 9 lat
  • Postów:10
0

Najprościej będzie chyba tak:

Kopiuj
string path = System.Reflection.Assembly.GetExecutingAssembly().Location;
Process.Start(path);
K2
  • Rejestracja:ponad 13 lat
  • Ostatnio:ponad 10 lat
  • Postów:142
0

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

LM
  • Rejestracja:ponad 10 lat
  • Ostatnio:ponad 9 lat
  • Postów:10
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:

Kopiuj
Process.Start("notepad.exe");
Hrypa
  • Rejestracja:około 18 lat
  • Ostatnio:3 dni
0

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

K2
  • Rejestracja:ponad 13 lat
  • Ostatnio:ponad 10 lat
  • Postów:142
0

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

edytowany 1x, ostatnio: kornik280
Hrypa
  • Rejestracja:około 18 lat
  • Ostatnio:3 dni
0

Zamiast GetExecutingAssembly() użyj GetEntryAssembly()

K2
  • Rejestracja:ponad 13 lat
  • Ostatnio:ponad 10 lat
  • Postów:142
0

Z

Kopiuj
 System.Reflection.Assembly.GetEntryAssembly()

dostaje null

somekind
Moderator
  • Rejestracja:około 17 lat
  • Ostatnio:dzień
  • Lokalizacja:Wrocław
0

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

LM
  • Rejestracja:ponad 10 lat
  • Ostatnio:ponad 9 lat
  • Postów:10
0

Masz to dyspozycji jeszcze metodę

Kopiuj
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.

Kopiuj
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.

edytowany 1x, ostatnio: lmarek
N0
  • Rejestracja:ponad 17 lat
  • Ostatnio:ponad 6 lat
  • Lokalizacja:Kraków
  • Postów:767
0

Pomogłem? To dobrze :)
0
lmarek napisał(a):

Masz to dyspozycji jeszcze metodę

Kopiuj
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.

Kopiuj
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

K2
  • Rejestracja:ponad 13 lat
  • Ostatnio:ponad 10 lat
  • Postów:142
0
lmarek napisał(a):

Masz to dyspozycji jeszcze metodę

Kopiuj
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.

Kopiuj
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

edytowany 1x, ostatnio: kornik280
K2
  • Rejestracja:ponad 13 lat
  • Ostatnio:ponad 10 lat
  • Postów:142
0

Dla potomnych:

Kopiuj
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

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.