我正在对经典ASP页面进行一些更新,我注意到当我添加很多INCLUDES(即<!--#INCLUDE FILE="Foo.asp" -->
)时,我得到一个通用的“HTTP / 1.1 500服务器错误”,在页面上以粗体显示。
这是值得注意的部分因为我通常会收到详细的错误消息(错误,文件,行等)
我已经检查过这些INCLUDES都没有错误。它似乎与INCLUDES的数量或.asp文件的完全编译大小有关。
这是我可以在IIS的ASP设置中修复的内容吗?
我从来没有听说过包含的限制。但是结果页面可能太大了。您是否删除了所有包含并逐步退回?
或者我更喜欢一种动态包括。使用以下功能,您可以获得一些优势:可以动态包含文件。您的结果页面仅包含neccascary文件。主脚本中的变量可以在包含的文件中使用。您可以将asp代码放入数据库中。
但这种方式有一个限制:整个包含的文件必须用ASP编写。所以不允许使用<%= date%>。它必须写为response.write日期
我正在使用一个函数来包含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
试试<%response.buffer = false%>
。它在IIS5.0及更高版本中默认为true
,必须明确关闭。它应该是@LANGUAGE
指令下面的第一行代码。
关闭此缓冲区将释放资源,因此您不会达到最大值。在您可能遇到大小限制的共享主机上,增加缓存大小并不总是可行的。