Существует ли максимальное количество INCLUDES на классической странице ASP?

Я делаю некоторые обновления на классической странице ASP и заметил, что когда я добавляю много INCLUDES (т.е. <!--#INCLUDE FILE="Foo.asp" -->), я получаю общую ошибку "HTTP/1.1 500 Server Error", выделенную жирным шрифтом на странице.

Это примечательно отчасти потому, что я обычно получаю подробные сообщения об ошибках (ошибка, файл, строка и т.

Я проверил, что ни один из этих INCLUDES не имеет ошибок. Похоже, это связано с количеством INCLUDES или полностью скомпилированным размером файла .asp.

Можно ли это исправить в настройках ASP для IIS?


person nbardach    schedule 12.04.2018    source источник
comment
Вы проверяли по отдельности все включено? Это может быть ошибка на какой-то включенной странице вместо ограничения   -  person Ricardo Pontual    schedule 12.04.2018
comment
Да, как я уже говорил выше, я проверил все включения и ошибок нет.   -  person nbardach    schedule 12.04.2018
comment
Вы говорите, что получаете общую ошибку 500 — включили ли вы понятные сообщения об ошибках — это может помочь вам точно определить проблему. chestysoft.com/asp-error-messages.asp   -  person John    schedule 12.04.2018
comment
Да, да. Обычно я получаю подробные сообщения об ошибках с кодом ошибки, номером строки, страницей и т. д. Но это сообщение читается как HTTP/1.1 500 Server Error.   -  person nbardach    schedule 12.04.2018


Ответы (2)


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

В качестве альтернативы я предпочитаю тип динамических включений. С моей следующей функцией у вас есть некоторые преимущества: вы можете динамически включать файл. Ваша страница результатов будет содержать только необходимые файлы. Во включаемых файлах можно использовать переменные из основного скрипта. Вы можете поместить asp-код в базу данных.

Но у этого способа есть одно ограничение: весь включаемый файл должен быть написан на ASP. Поэтому нельзя использовать ‹%= date %>. Это должно быть написано как response.write date

Я использую функцию для включения asp-файлов:

function fGet(getFile)
' source: http://www.aspfaq.de/index.asp?FID=14&ELE=1223
                Set objFileSys = Server.CreateObject("Scripting.FileSystemObject")
    sPfad=Server.MapPath("./")&"\" &getFile

    Set objFile = objFileSys.OpenTextFile(sPfad)
        ' --- read the file
        FileContent = objFile.ReadAll
        objFile.Close
    Set objFile = Nothing
    Set objFileSys = Nothing

     fileContent=replace(fileContent,chr(60)&chr(37),"")
     fileContent=replace(fileContent,chr(37)&chr(62),"")

     Execute(FileContent)


end function
person Michael Kothe-multiNETT    schedule 23.04.2018
comment
Отличный ответ и очень полезный скрипт! Спасибо, но это не совсем ответ на мой вопрос. Знаете ли вы, есть ли ограничение на страницу результатов ASP? Я искал и не могу найти ничего упомянутого. docs.microsoft.com/en-us/iis/ конфигурация/system.webserver/asp/ - person nbardach; 23.04.2018
comment
мой ответ начался с того, что я никогда не слышал об ограничении инклюзов, я просто думаю, что у вас проблемы с памятью. Вы удалили все включения и вставили их снова шаг за шагом? - person Michael Kothe-multiNETT; 24.04.2018
comment
Я только что сделал небольшой тест. файл с более чем 100 включениями. Нет проблем! - person Michael Kothe-multiNETT; 24.04.2018
comment
Благодарность! Я также сделал тестовый файл со многими включениями. Тот же результат, что и ваш тест. Я думаю, что это должно быть связано с размером конечной страницы, но я не могу найти в Интернете никакой информации об ограничениях страницы ASP. - person nbardach; 25.04.2018
comment
возможно, это поможет: stackoverflow.com/questions/161712/ или проверьте настройки на вашем IIS-сервере в ASP. Может быть, вы можете изменить настройки кэша или лимитов - person Michael Kothe-multiNETT; 25.04.2018

Попробуйте <%response.buffer = false%>. По умолчанию он равен true в IIS5.0 и более поздних версиях и должен быть явно отключен. Это должна быть самая первая строка кода после директивы @LANGUAGE.

Отключение этого буфера освободит ресурсы, поэтому вы не достигнете своего максимума. Увеличение размера кеша не всегда возможно на виртуальном хостинге, где вы, вероятно, столкнетесь с ограничениями размера.

person user11312624    schedule 04.04.2019
comment
Хорошая идея. Проверим это. Спасибо! - person nbardach; 04.04.2019