Вот пример кода для имитации проблемы:Классический ASP - Strange Тип ошибки несовпадения
functs.asp
<%
Function SecureStr(Str)
Dim Res
Res = Trim(Str)
If (Res <> "") Then
Res = Replace(Res, "'", "")
Res = Replace(Res, ";", "")
Res = Replace(Res, "=", "")
End If
SecureStr = Res
End Function
%>
main.asp
<%
Option Explicit
Dim Dept
Dept = Request.QueryString("d")
%>
<html>
<body>
<%=Server.Execute(Dept & ".asp")%>
</body>
</html>
buy.asp
<!--#include file="functs.asp"-->
<%
Dim Name
Name = SecureStr(Request.Form("name"))
%>
BUY CONTENT
Как вы можете видеть, functs.asp i s входит внутри покупка.asp файл. Таким образом, он работает без проблем (ошибок) при открытии http://localhost/main.asp?d=buy. Но теперь я пытаюсь включить functs.asp внутри main.asp, как это:
main.asp
<%
Option Explicit
Dim Dept
Dept = Request.QueryString("d")
%>
<!--#include file="functs.asp"-->
<html>
<body>
<%=Server.Execute(Dept & ".asp")%>
</body>
</html>
buy.asp
<%
Dim Name
Name = SecureStr(Request.Form("name"))
%>
BUY CONTENT
Ну, когда включен functs.asp внутри main.asp, у меня появилось сообщение об ошибке:
Microsoft VBScript runtime error '800a000d'
Type mismatch: 'SecureStr'
/buy.asp, line 3
Пожалуйста, помогите мне? Я действительно не знаю, что происходит ...
Спасибо!
Хорошо, спасибо! Я попытаюсь найти обходное решение ... – Guybrush
@Paruba приветствую вас. вариантов не так много. Я бы подготовил общий asp-файл для включения со всеми функциями, и декларации потребуются на страницах asp, которые будут выполняться с помощью 'Server.Execute'. –
Kul-Tigin, вы имеете в виду заменить #include file = "functs.asp" на Server.Execute ("functs.asp")? – Guybrush