vbscript - 经典 ASP IIS 6.0 下 VBScript 中 Server.CreateObject 上的 HTTP 状态 443

标签 vbscript asp-classic iis-6 com-interop

这是旧的遗留代码,已经运行了至少 5 年。该 DLL 恰好与 Paypal 的 PayFlowPro 商家处理服务相关,但我认为这是导致问题的 Windows 场景。

突然,根据下面的代码,我在浏览器中看到此错误:

> Error with new credit card processing software, please call Neal at xxx-xxx-xxxx
> Error Ref102: client = Server.CreateObject returned Null
> (Detailed error: Object doesn't support this property or method)
> (Detailed error: 438)

IIS 日志显示 443:

2013-12-19 00:57:24 W3SVC4 173.45.87.10 POST /myapps/adm_settle.asp - 443 - 76.187.77.159 Mozilla/5.0+(Windows+NT+6.2;+WOW64;+rv:26.0)+Gecko/20100101+Firefox/26.0 200 0 0

自从我看到上面的 433,我想肯定存在一些安全错误。作为测试,我尝试将应用程序池用户放入管理员组,重新启动 IIS,但仍然出现完全相同的错误。我还授予该用户特定的访问权限来读取磁盘上的 .DLL。

我确实运行了 REGASM 来尝试重新注册 .DLL。我也尝试过 REGSRV32,但我猜这在 .NET DLL 上失败了。我已经好几年没有接触过这么老的软件了。

ASP/VBScript 代码:

    Err.Clear 
    On Error Resume Next 
    set client = Server.CreateObject("PayPal.Payments.Communication.PayflowNETAPI")
    If Err.number > 0 Then 
       response.write "Error with new credit card processing software, please call Neal at xxx-xxx-xxxx" 
       response.write "</br>(Detailed error: " & Err.Description & ")" 
       response.write "</br>(Detailed error: " & Err.Number & ")" 
       response.End 
    End If 
    If client Is Nothing Then 
       Response.write "Error with new credit card processing software, please call Neal at xxx-xxx-xxxx" 
       Response.Write "</br>Error Ref101: client = Server.CreateObject returned 'nothing' "
       response.write "</br>(Detailed error: " & Err.Description & ")" 
       response.write "</br>(Detailed error: " & Err.Number & ")" 
       Response.End 
    End If 
    If client = null Then 
       Response.write "Error with new credit card processing software, please call Neal at xxx-xxx-xxxx" 
       Response.Write "</br>Error Ref102: client = Server.CreateObject returned Null "
       response.write "</br>(Detailed error: " & Err.Description & ")" 
       response.write "</br>(Detailed error: " & Err.Number & ")" 
       Response.End 
    End If 

此外,我不确定 443 http 状态如何更改为 438 Err.Number。

最佳答案

谢谢大家。我希望我已经保存了原来的错误。我已经使用 C# 太久了,我忘记了如何编写 VBScript 代码。我尝试添加错误处理,这可能会给我错误的结果。

如果发表评论的一些人能够给出答案,我会接受它们。

443 是另一个错误线索,也是我的错误假设,它是一个错误,而不是端口号。

不幸的是,我现在没有保存原来的错误。我在原始代码中添加了代码,以提供更好或更严格的错误处理,并且添加“= null”测试是一个坏主意。

这是对 VBScript 使用empty、nothing 和 isNull 的很好的解释:http://evolt.org/node/346/

我删除了它,更正后的代码是:

    Err.Clear 
    On Error Resume Next 
    'set client = Server.CreateObject("PFProCOMControl.PFProCOMControl.1")
    set client = Server.CreateObject("PayPal.Payments.Communication.PayflowNETAPI")
    If Err.number > 0 Then 
       response.write "Error with new credit card processing software, please call Neal at 214-455-8060" 
       response.write "</br>(Detailed error: " & Err.Description & ")" 
       response.write "</br>(Detailed error: " & Err.Number & ")" 
       response.End 
    End If 
    If client Is Nothing Then 
       Response.write "Error with new credit card processing software, please call Neal at 214-455-8060" 
       Response.Write "</br>Error Ref101: client = Server.CreateObject returned 'nothing' "
       response.write "</br>(Detailed error: " & Err.Description & ")" 
       response.write "</br>(Detailed error: " & Err.Number & ")" 
       Response.End 
    End If 

关于vbscript - 经典 ASP IIS 6.0 下 VBScript 中 Server.CreateObject 上的 HTTP 状态 443,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20672011/

相关文章:

asp-classic - ASP 在两个页面之间丢失 session

multithreading - 如何在经典asp中执行多线程/后台进程

asp.net-mvc - MVC2 + ASP.NET 4.0 + IIS6 + 无扩展名 URL,不再需要通配符映射?

iis-7 - IIS7 将 web.config 从经典迁移到集成问题

audio - 使用Vbscript提取或播放youtube音频

visual-studio-2010 - 如何延迟VB脚本?

vbscript - GetRef 捕获方法?

asp.net - 如何实现在 ASP.NET 2.0、Coldfusion 5 和 Classic ASP 之间互操作的强大、可逆加密?

asp.net-mvc-3 - 如何将多项目解决方案部署到生产服务器

api - 使用VBScript控制记事本