D'État HTTP 443 sur le Serveur.CreateObject dans VBScript sous Classique ASP IIS 6.0
C'est vieux héritage du code qui a été en cours d'exécution d'au moins 5 ans. La DLL arrive à se rapportent à Paypal PayFlowPro service de traitement de marchand, mais je pense que c'est un scénario de Windows à l'origine du problème.
Soudain, basé sur le code ci-dessous, je vais voir cette erreur dans le navigateur:
> 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)
Le journal IIS me montre le 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
Depuis que j'ai vu le 433 ci-dessus, je pense, il doit y avoir une erreur de sécurité. Tout comme un test, j'ai essayé de mettre l'application-utilisateur de la piscine dans le groupe Administrateur, redémarré IIS, et encore obtenir exactement la même erreur. J'ai aussi vu que spécifique à l'utilisateur, l'accès à la lecture de la .DLL sur le disque.
Je n'ai couru REGASM pour essayer de le ré-enregistrer le .DLL. J'ai aussi essayé REGSRV32, mais je suppose que ça échoue sur .NET Dll. Il a été quelques années depuis que je l'ai traitée avec le logiciel de ce vieux.
ASP/VBScript Code:
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
Aussi, je ne suis pas sûr de savoir comment les 443 http statut est changé pour un 438 Err.Numéro.
- 443 dans votre journal n'est pas le statut/code d'erreur, mais est le numéro de port (443 = SSL). Le code de réponse est près de la fin de la ligne (200 = OK). Le vrai problème est que PayPal.Les paiements.De la Communication.PayflowNETAPI ne peut pas être créé. A quelque chose de changé sur votre serveur? AppPool toujours 32 bits?
- Vérifiez également pool d'applications .NET version n'a pas changé, et de vérifier les autorisations pour le fichier DLL.
- Que d'un côté-note: la comparaison
client = null
toujours évaluer àFalse
. Vous devez utiliser leIsNull()
de fonction pour vérifier lesNull
valeurs, parce queNull
est défini comme une valeur inégale à toute autre valeur, y compris d'autresNull
valeurs.
Vous devez vous connecter pour publier un commentaire.
Merci à tous. Je souhaite que j'avais sauvé mon erreur d'origine. Je fais du C# si longtemps, je commençais à oublier comment le code VBScript. J'ai essayé d'ajouter la gestion des erreurs qui peuvent avoir été de me donner de faux résultats.
Si certains de ceux qui ont commenté aurait mis les réponses, j'aurais accepté.
443 était une autre fausse piste et de la mauvaise hypothèse de ma part que c'était une erreur, pas un port de #.
Malheureusement, aujourd'hui, je n'ai pas enregistrer l'erreur d'origine. J'avais ajouté du code pour mon code d'origine pour donner soi-disant le meilleur ou le resserrement de la gestion d'erreur, et en ajoutant le "= null" test était une mauvaise idée.
C'était une très bonne explication de VBScript l'utilisation de vide vs rien vs isNull: http://evolt.org/node/346/
Je l'ai enlevé, et le code corrigé est: