Как предотвратить перезапуск приложения ASP.NET, когда web.config изменяется?

Кажется, есть дополнительный символ ' в атрибуте Id , который вы использовали. Кроме того, кажется, что элемент является динамическим, поэтому вам нужно вызвать WebDriverWait , и вы можете использовать любое из следующих решений:

  • Id:

    new WebDriverWait(foxdriver, TimeSpan.FromSeconds(20)).Until(ExpectedConditions.ElementToBeClickable(By.Id("btnStopSs"))).Click();
    
  • CssSelector:

    new WebDriverWait(foxdriver, TimeSpan.FromSeconds(20)).Until(ExpectedConditions.ElementToBeClickable(By.CssSelector("input#btnStopSs[value='Stop']"))).Click();
    
  • XPath:

    new WebDriverWait(foxdriver, TimeSpan.FromSeconds(20)).Until(ExpectedConditions.ElementToBeClickable(By.XPath("//input[@id='btnStopSs' and @value='Stop']"))).Click();
    
34
задан Abel 19 January 2017 в 18:10
поделиться

4 ответа

<забастовка> Насколько я знаю, нет никакого способа отключить это поведение, изменения в webconfig вынуждают приложение быть перезапущенным.

Обновление: это на самом деле возможно, существует много методов, хорошо зарегистрированных, как объяснены в этом ответе *

Исходный ответ:

существует подобный вопрос здесь только для другой ссылки. Я нашел дополнительную информацию, которая может быть полезной.

Причина Изменений конфигурации Перезапуск Изменений Домена приложения
в параметрах конфигурации в файлах Web.config косвенно заставляют домен приложения перезапускать. Это поведение происходит дизайном. Можно дополнительно использовать атрибут configSource для ссылки на внешние конфигурационные файлы, которые не вызывают перезапуск, когда изменение внесено. Для получения дополнительной информации см. configSource в Общие Атрибуты, Наследованные Элементами Раздела.

От Эта Статья

MSDN * <глоток> Правовая оговорка: Я записал другой ответ и обычно не буду делать самоссылку, но находить достаточно необходимым связаться здесь с тех пор спустя 8 лет после этого сообщения, это действительно очень отличается: решение очень легко путем нажатия через фронтенд IIS, и обходные решения существуют начиная с ASP.NET 1.0.

27
ответ дан 27 November 2019 в 16:21
поделиться

Я работал в к еще большей проблеме в том же направлении - изменения в любой , файл или подпапка в базовом каталоге AppDomain заставляют среду хостинга завершать работу. Это - довольно большая проблема для нашего приложения, поскольку мы выполняем UI WPF в том же AppDomain, и мы не можем перезапустить его, не будучи distruptive пользователю.

я действительно хотел избежать необходимости выполнять отдельный AppDomain для веб-части приложения, таким образом, я сделал некоторое рытье с Отражателем. Я нашел, что преступник был внутренним классом FileChangesMonitor.

, Таким образом, я записал ужасный ужасный отражательный взлом для решения проблемы. Я думал, что отправлю его здесь как потенциальное решение для кого-либо еще имеющего ту же проблему. Просто необходимо звонить HttpInternals.StopFileMonitoring() для отключения завершения работы на изменениях файла/папки.

internal static class HttpInternals
{
    private static readonly FieldInfo s_TheRuntime = typeof(HttpRuntime).GetField("_theRuntime", BindingFlags.NonPublic | BindingFlags.Static);

    private static readonly FieldInfo s_FileChangesMonitor = typeof(HttpRuntime).GetField("_fcm", BindingFlags.NonPublic | BindingFlags.Instance);
    private static readonly MethodInfo s_FileChangesMonitorStop = s_FileChangesMonitor.FieldType.GetMethod("Stop", BindingFlags.NonPublic | BindingFlags.Instance);

    private static object HttpRuntime
    {
        get
        {
            return s_TheRuntime.GetValue(null);
        }
    }

    private static object FileChangesMonitor
    {
        get
        {
            return s_FileChangesMonitor.GetValue(HttpRuntime);
        }
    }

    public static void StopFileMonitoring()
    {
        s_FileChangesMonitorStop.Invoke(FileChangesMonitor, null);
    }
}
20
ответ дан 27 November 2019 в 16:21
поделиться

A solution would be adding following element to web.config section :

<httpRuntime
    waitChangeNotification="315360000"
    maxWaitChangeNotification="315360000"
/>
9
ответ дан 27 November 2019 в 16:21
поделиться

As mentioned by jfburdet the solution is to use waitChangeNotification and maxWaitChangeNotification.

That being said, you should know they don't work on IIS 7 if ASP.NET is run in mixed mode: http://forums.iis.net/t/1149344.aspx

0
ответ дан 27 November 2019 в 16:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: