Вы можете отключить приложение во время публикации, которое, надеюсь, должно освободить блокировку файла и позволить вам обновить его.
Я написал об этом некоторое время назад. Описанная поддержка была отправлена внутри Azure SDK и Visual Studio Update. Я не помню точных релизов, но я могу узнать, если это необходимо.
Примечание: если вы публикуете с CI-сервера, CI-серверу потребуются также обновленные версии
В VS при создании профиля публикации в Интернете настройки из диалога хранятся в Properties\PublishProfiles\
в виде файлов, которые заканчиваются на .pubxml. Примечание: есть файл .pubxml.user
, этот файл не должен быть изменен
Чтобы отключить ваше приложение в автономном режиме в файле .pubxml
, добавьте следующее свойство.
Способ, которым это было реализовано на стороне MSDeploy, заключается в том, что app_offline.htm файл удаляется в корневом каталоге веб-сайта / приложения. Оттуда среда выполнения asp.net обнаружит это и отключит ваше приложение в автономном режиме. Из-за этого, если ваш сайт / приложение не поддерживает asp.net, эта функция не будет работать.
Реализация этого делает ее такой, что приложение не может быть строго отключено до начала публикации. Сначала файл app_offline.htm отбрасывается, затем MSDeploy начинает публикацию файлов. Он не дожидался, пока ASP.NET обнаружит файл и фактически отключит его. Из-за этого вы можете столкнуться с ситуациями, когда вы все еще сталкиваетесь с блокировкой файлов. По умолчанию VS позволяет retrys, так что обычно приложение будет отключено во время одной из попыток, и все будет хорошо. В некоторых случаях для ASP.NET может потребоваться больше времени. Это немного сложнее.
В том случае, если вы добавили
, и ваше приложение скоро не будет отключено, я предлагаю вам отключить приложение до начала публикации. Существует несколько способов сделать это удаленно, но это зависит от вашей настройки. Если у вас есть только доступ к MSDeploy, вы можете попробовать следующую последовательность:
msdeploy.exe
, чтобы отключить ваш сайт, отключив app_offline.htm msdeploy.exe
для публикации ваше приложение (убедитесь, что синхронизация не удаляет файл app_offline.htm _) msdeploy.exe
чтобы принести приложение онлайн, удалив app_offline.htm Я написал, как вы можете это сделать на http://sedodream.com/2012/01/08/howtotakeyourwebappofflineduringpublishing.aspx . Единственное, чего не хватает в этом сообщении в блоге, - это отсрочка ожидания того, что сайт фактически будет отключен. Вы также можете создать скрипт, который просто вызывает msdeploy.exe
напрямую, вместо того, чтобы интегрировать его в процесс сборки / публикации проекта.
Мое предложение состоит в том, чтобы добавить идентификатор атрибута к каждому вопросу divison со значением идентификатора вопроса, как показано ниже
<? foreach ($questions as $i=>$question) { ?>
<div class='question' id="<? $question->id ?>">
// Your remaining code here
</div>
<? } ?>
. После отправки формы в обратном вызове ajax-вызова удалите div вопроса с помощью идентификаторы, которые отсутствуют в ответе, как показано ниже
function retakeQuiz(incorrect) {
// I am assuming incorrect as [id, id, id] for example
$('.question').each(function (index, question) {
if (!incorrect.includes($(question).attr('id'))) {
$(question).remove();
}
});
}
Выполнение манипуляций с двух сторон, подобных этому, всегда заканчивается немного тизи. Вместо того, чтобы изменять вопросы с помощью jQuery, можете ли вы изменить конечную точку PHP для возврата модального контента с учетом набора идентификаторов? Вот большая идея:
Ваш PHP-код имеет конечную точку, которая принимает список идентификаторов. Эти идентификаторы передаются в код PHP, который делает это, и возвращает список вопросов из идентификаторов (и соответствующих ответов). Когда пользователь сначала посещает вашу страницу, ваш PHP-код автоматически загружает все вопросы в модальный, поэтому пользователь получает всю викторину (подобно тому, как вы загружаете загрузку начальной страницы сейчас).
Как только они завершат викторину, вы сказали, что сохранили идентификаторы вопросов, которые они получили неправильно. Я бы рекомендовал отправить идентификаторы в ваш php-код, чтобы вернуть только что созданный модал, включая только те ответы, которые они получили неправильно. Затем вы можете просто заменить модальный контент на результат. Возможно, что-то вроде этого (это все psuedo-код, но я надеюсь, что он перевернул идею)
// user has finished taking the quiz
$.get({
"url": "/yourendpoint" + ids.toString()
"method": "GET"
}.then(function(data){
$(".modal-content").html(data);
});
modal-contents
с вопросами, введенными в 4. Запишите HTML-код modal-content
, как показано в фрагменте. Надеюсь, что это немного подробнее
– Zac
13 July 2018 в 16:51
<div>
, который показывает вопрос, он показывает корректный вывод по мере необходимости. Но как показать вопросы на экране. – John Caverns 16 July 2018 в 15:01