Dzień dobry,
Czy istnieje jakiś sposób aby zrestartować aplikacje ASP.NET z poziomu kodu?
Pozdrawiam
Dzień dobry,
Czy istnieje jakiś sposób aby zrestartować aplikacje ASP.NET z poziomu kodu?
Pozdrawiam
Najprościej będzie chyba tak:
string path = System.Reflection.Assembly.GetExecutingAssembly().Location;
Process.Start(path);
Dostaje exception na start.process o treści: "Z określonym plikiem nie skojarzono dla tej operacji żadnej aplikacji"
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");
Bo prawdopodobnie wywołujesz ten kod w assembly, które jest dll-ką, nie exe.
Tak scieżka jest do dll-ki.To jak to zrobić?
Zamiast GetExecutingAssembly() użyj GetEntryAssembly()
Z
System.Reflection.Assembly.GetEntryAssembly()
dostaje null
A czemu w ogóle chcesz to zrobić? Może istnieje inny sposób na rozwiązanie Twojego problemu.
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.
http://weblogs.asp.net/scottgu/426755 Spróbuj tego
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
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
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