Hier ist ein Beispielcode, das Problem zu simulieren:klassischen ASP - Strange Type Mismatch Fehler
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
Wie Sie sehen können, functs.asp ich s enthalten in der Datei buy.asp. Auf diese Weise funktioniert es ohne Probleme (Fehler) beim Öffnen http://localhost/main.asp?d=buy. Aber jetzt versuche ich functs.asp innen Main.asp enthalten, wie folgt aus:
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
Nun, wenn inbegriffen functs.asp innen main.asp, ich habe eine Fehlermeldung:
Microsoft VBScript runtime error '800a000d'
Type mismatch: 'SecureStr'
/buy.asp, line 3
Bitte, kann mir jemand helfen? Ich weiß wirklich nicht, was los ist ...
Danke!
Ok, danke! Ich werde versuchen, einen Workaround zu finden ... – Guybrush
@Paruba du bist willkommen. Es gibt nicht viele Optionen. Ich würde eine generische ASP-Datei vorbereiten, die mit allen Funktionen enthalten ist, und Deklarationen werden in den ASP-Seiten benötigt, die von 'Server.Execute' ausgeführt werden. –
Kul-Tigin, du meinst ersetzen die #include file = "functs.asp" mit Server.Execute ("functs.asp")? – Guybrush