這是已運行至少5年的舊舊代碼。該DLL恰好與Paypal的PayFlowPro商家處理服務有關,但我認爲這是導致此問題的Windows情況。經典ASP IIS 6.0下的VBScript中的Server.CreateObject上的HTTP狀態443
突然,基於下面的代碼,我看到這個錯誤在瀏覽器:
> 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的。
在日誌中的443是不是狀態/錯誤代碼,但是端口號(443 = SSL)。響應代碼接近行尾(200 = OK)。真正的問題是無法創建PayPal.Payments.Communication.PayflowNETAPI。你的服務器有什麼改變嗎? AppPool仍然設置爲32位? – johna
另外檢查AppPool .NET版本沒有改變,並檢查DLL文件的權限。 – johna
作爲一個附註:比較'client = null'將總是評估爲'False'。您必須使用['IsNull()'](http://msdn.microsoft.com/zh-cn/library/zbchw6hz%28v=vs.84%29.aspx)函數來檢查「Null」值,因爲'Null'被定義爲一個不等於任何其他值的值,包括其他'Null'值。 –