这是旧的遗留代码,已经运行了至少 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/