什么是我在ASP中做错了

时间:2011-10-11 05:18:36

标签: vbscript asp-classic

在php中我正在使用这个

'if(!f || !f2)

现在我正在将此代码转换为ASP

If Not f OR Not f2 Then

但它给我一个错误: -

Error Type:
Microsoft VBScript runtime (0x800A01B6)
Object doesn't support this property or method

我现在可以做什么,我是ASP的新手

3 个答案:

答案 0 :(得分:2)

因为ff2是对象,我认为ASP假设它们具有您尝试在其中测试的默认属性

If Not f OR Not f2 Then

这就是您收到该错误消息的原因(例如,如果默认属性为Name,您实际上是在测试If Not f.Name OR Not f2.Name Then)。

您可能想要做的是测试它们是否是无效对象,您可以通过

进行
If (f Is Nothing) OR (f2 Is Nothing) Then 

答案 1 :(得分:1)

看起来你真正需要的是检查这些文件是否存在 - 经典ASP的逻辑与PHP不同。

所以请尝试使用此代码:

Dim fp1, f, f2
Dim vid, vkey
Dim enc, enc1, enc2
set fp1 = Server.CreateObject("Scripting.FileSystemObject")
If fp1.FileExists(vid_file) And fp1.FileExists(vkey_file) Then
    set f = fp1.OpenTextFile(vid_file, 1, true)
    set f2=fp1.OpenTextFile(vkey_file, 1, true)
    vid = Trim(f.ReadLine)
    vkey = Trim(f2.ReadLine)
    f.Close
    f2.Close
    Set f = Nothing
    Set f2 = Nothing

    enc1 = hex_sha1(vid)
    enc2 = hex_sha1(vkey)
    enc = enc1 & enc2
Else  
    Response.Write "Vendor authentication failed."
End If

答案 2 :(得分:0)

您可能需要IsObject()

尝试

If Not IsObject(f1) Or Not IsObject(f2) Then ...