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 le IsNull() de fonction pour vérifier les Null valeurs, parce que Null est défini comme une valeur inégale à toute autre valeur, y compris d'autres Null valeurs.
InformationsquelleAutor NealWalters | 2013-12-19