Опитвам се да рестартирам приложението ми динамично.
Използвам следния метод:
System.Web.HttpRuntime.UnloadAppDomain();
Проблема е, че не се получава.Оказа се, че този метод работи само при Full Trust.За пореден път ми се случва даполуч грешка на production сервъра, която не мога да хвана на локалния си компютър.
Рестартирането на приложенито може да се случи при следните ситуации:
Редактиране на web.config
Редактиране machine.config
Редактиране на global.asax
Променени фаслове в bin директорията или някоя от нейните поддиректории.
Промяна (създаване, изтриване, преименуване) на директория в главната директория
ASP.NET фаслове са редактирани и прекомпилирани повече от 20 пъти(Дефоутна настройка в machine.config)
При сетване на атрибут в <processModel> елемента на machine.config, което предизвикава рестарт или shutdown на работния процес*.
*Не се отнася за Вindows 2003 където този елемент е пропуснат.
Затова реших проблема благодарение на първата възможност: Презаписах web.config-a с нов timestap и се получи.
Ето решението на проблема:
/// <summary>
/// Restarts the Web Application
/// Requires either Full Trust (HttpRuntime.UnloadAppDomain)
/// or Write access to web.config.
/// </summary>
public static bool RestartWebApplication()
{
bool Error = false;
try
{
// *** This requires full trust so this will fail
// *** in many scenarios
HttpRuntime.UnloadAppDomain();
}
catch
{
Error = true;
}
if (!Error)
return true;
// *** Couldn't unload with Runtime - let's try modifying web.config
string ConfigPath = HttpContext.Current.Request.PhysicalApplicationPath + "\\web.config";
try
{
File.SetLastWriteTimeUtc(ConfigPath, DateTime.UtcNow);
}
catch
{
return false;
}
return true;
}
Източници:
www.west-wind.com/WebLog/posts/5688.aspx