2013-12-19 3 views
0

이것은 적어도 5 년간 실행 된 오래된 레거시 코드입니다. DLL은 Paypal의 PayFlowPro 가맹점 처리 서비스와 관련이 있지만이 문제를 일으키는 Windows 시나리오라고 생각합니다. 아래의 코드를 기반으로 갑자기HTTP 상태 443 Server.CreateObject VBScript에서 기본 ASP IIS 6.0

, 나는 브라우저에서이 오류를보고 있어요 : 나는 위의 433을 본 이후

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 

:

> 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을 보여줍니다 , 나는 약간의 보안 오류가 있어야한다고 생각하고있다. 테스트와 마찬가지로 관리자 그룹에 app-pool 사용자를 추가하고 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로 변경됩니다 방법을 잘 모르겠어요.

+1

로그에 443 상태가 아니다/오류 코드이지만 포트 번호 (443 = SSL)입니다. 응답 코드는 줄 끝 부분에 있습니다 (200 = OK). 진짜 문제는 PayPal.Payments.Communication.PayflowNETAPI를 만들 수 없다는 것입니다. 서버에서 무언가가 변경 되었습니까? AppPool은 여전히 ​​32 비트로 설정되어 있습니까? – johna

+0

또한 AppPool .NET 버전이 변경되지 않았는지 확인하고 DLL 파일에 대한 사용 권한을 확인하십시오. – johna

+0

부가 메모 : 비교'client = null'은 항상'False'로 평가됩니다. 'Null'값을 확인하려면 ['IsNull()'] (http://msdn.microsoft.com/en-us/library/zbchw6hz%28v=vs.84%29.aspx) 함수를 사용해야합니다. 'Null'은 다른 'Null'값을 포함하여 다른 값과 다른 값으로 정의됩니다. –

답변

0

모두에게 감사드립니다. 나는 원래의 오류를 저장했으면 좋겠다. 나는 C#을 오랫동안 해왔고 VBScript를 코딩하는 방법을 잊어 버리고있었습니다. 나에게 잘못된 결과를 줄 수있는 오류 처리를 추가하려고했습니다.

댓글을 달았던 사람들 중 일부가 답변을 입력하면 내가 받아 들였을 것입니다.

443은 오류가 아니라 포트 번호가 아닌 다른 잘못된 흔적과 잘못된 가정이었습니다.

불행히도 나는 원래 오류를 저장하지 않았습니다. 내 원래 코드에 코드를 추가하여 더 나은 오류 처리 또는 더 엄격한 오류 처리를 제공하고 "= null"테스트를 추가하는 것은 나쁜 생각이었습니다.

는 isNull에 대 아무것도 대 빈의 VBScript를의 사용의 아주 좋은 설명했다 : 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