Классическая страница ASP "Down for Maintenance" - PullRequest
2 голосов
/ 02 декабря 2008

Я делаю некоторые изменения в устаревшем классическом приложении ASP. Я сделал изменения локально, и теперь я хочу скопировать измененные файлы на сервер. В то же время мне нужно загрузить базу данных Access, добавить некоторые поля в некоторые таблицы и загрузить ее снова. По этой причине мне нужно помешать посетителям изменять базу данных, пока это происходит.

Мой главный вопрос: каков наилучший способ настроить быструю страницу «Не работает», которая будет отображаться немедленно и независимо от того, какую страницу посетитель запрашивает. Приложение уже установлено, поэтому я бы предпочел ответ, который не требовал от меня переделки архитектуры приложения.

Мой второй вопрос (возможно, это должен быть отдельный вопрос): Есть ли лучший способ добавить поля в таблицу БД, чем копировать, модифицировать и вставлять снова? Прошу прощения, если это глупый вопрос - я новичок в ASP - тоже новичок в Windows.

У меня есть только FTP доступ к удаленному серверу.

Спасибо.

Ответы [ 6 ]

5 голосов
/ 11 декабря 2008

двумя способами:

1

если вы включаете серверное включение в каждую страницу asp, вы можете сделать response.redirect, включающий в /upgrading.html

2

в global.asa вы можете сделать response.redirect в сеансе при запуске события. Это, наверное, лучший способ. Будет работать только для страниц .asp, если клиент не заходит на страницу .html.

3 голосов
/ 29 января 2009

Есть ли у вас панель управления доступом к сайту вообще?

Когда я использовал несколько сайтов ASP Classic, я часто отключал их на пять минут, необходимые для выполнения того, что мне было нужно.

Груб, чтобы сделать с вашими посетителями, которых я знаю.

Как уже говорили другие, вы можете перенаправить на страницу, но это не остановит людей, посещающих статический контент на html-страницах, но тогда это, вероятно, не будет иметь значения, по крайней мере, остановит их, внося изменения в mdb во время загрузки это.

Жаль, что ASP.net app_offline.htm не работает для ASP classic.

Другой вариант, который я использовал, - это создание файла default.htm, который содержал автономное сообщение, и способ, которым IIS настраивал default.htm, переопределял default.asp, поэтому простая загрузка default.htm изменила домашнюю страницу. Это, конечно, не мешает никому использовать другие страницы .asp.

Так что нет реального ответа! К сожалению.

2 голосов
/ 02 декабря 2008

Если у вас есть только FTP-доступ к серверу (и вы не можете управлять IIS), просто вставьте response.redirect на страницу «down for maintenace» в верхней части всех страниц asp и удалите его после завершения обновления .

Изменения в базе данных могут быть выполнены с помощью инструкции ALTER TABLE.

0 голосов
/ 18 декабря 2017

Добавьте код ниже в web.config <?xml version="1.0"?> <configuration> <system.webServer> <modules runAllManagedModulesForAllRequests="true" /> </system.webServer> </configuration>

И поместите app_offline в корневую папку. Это будет работать

0 голосов
/ 18 сентября 2009

Лучше, чем включаемый файл, просто используйте Global.asa.

В Application_onStart Global.asa добавьте

Application("Offline")= True

вверху всех ваших ASP-файлов добавьте

If VarType(Application("Offline")) = vbBoolean Then If Application("Offline") Then Response.Redirect "App_Offline.htm"

(Double-if обходит отсутствие операторов короткого замыкания VBScript и, следовательно, любые ошибки типов данных.)

Вы можете даже установить код Global.asa на

Set fso= Server.CreateObject("Scripting.FileSystemObject")
Application("Offline")= fso.FileExists(Server.MapPath("App_Offline.htm"))
Set fso= Nothing

Что бы включить автономную страницу, если она существует, например ASP.NET. Однако код запуска приложения обрабатывается только при перезагрузке сервера (с использованием iisreset) или при изменении файла Global.asa, простого добавления App_Offline.htm будет недостаточно.

0 голосов
/ 02 декабря 2008

Что касается проблемы со страницей «Down Maintanance», то вы можете пойти дальше, и идея mapache будет на шаг впереди, если на каждой из страниц есть включенный файл (для заголовка), в который вы можете поместить Response.Redirect и загрузить это на месте. Это позволит избежать внесения изменений на всех страницах.

Другой вариант - загрузить временный HTML-файл, который IIS сначала найдет. В IIS вы можете указать, какую страницу name.ext искать в домене / папке. Например, когда вы заходите на сайт www.example.com, вы не указываете искомую страницу, поэтому она может загрузить index.html или index.htm, например, в зависимости от настроек. Это будет зависеть от настроек конфигурации ваших хостов, но немного проб и ошибок, я уверен, вы сможете узнать, какой из них они используют. Наиболее распространенными для IIS являются default.htm, default.html, index.html и index.htm. Затем вы можете поместить его в каждую из папок на веб-сайте (я знаю, что это не идеально), а затем выполнить техническое обслуживание.

При обновлении баз данных вы можете запустить скрипт миграции, написанный на sql, для обновления схемы и данных БД. Поскольку у вас есть только доступ по FTP, для этого потребуется какая-то страница, на которую можно вставить sql и запустить. Это, однако, открывает проблемы с безопасностью, поэтому загрузка базы данных, внесение изменений и последующая загрузка, вероятно, проще. В дополнение к этому вы также можете сохранить файл и у вас будет резервная копия: -)

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...