2012-05-25 2 views
2

Delphi XE로 작성된 SOAP 서버/클라이언트 응용 프로그램은 기업 프록시/방화벽 뒤에서 Windows 7 x64에서 실행하는 사용자에게 약간의 시간 동안 정상적으로 작동합니다. 응용 프로그램은 요청에서 TSOAPAttachment 오브젝트를 송수신합니다.일부 프록시/방화벽 뒤에서 SOAP 서버가 올바르게 작동하지 않을 수 있습니다.

문제점 :

  • 이 사용자의 첫 번째 요청을 수신하여 처리 한 후에, 서버는 (모든 사용자로부터의) 모든 요청이 성공적으로 처리 한 후에 오는 없었다.
  • 서버가 여전히 요청에 응답하지만 요청의 SOAPAttachment가이 사용자의 첫 번째 메시지 이후에 손상된 것 같습니다. 따라서 요청을 성공적으로 처리 할 수 ​​없습니다.
  • 퍼팅 후 서버에 로그를 디버깅 할 수 있습니다. 요청 매개 변수의 TSOAPAttachment.SourceStream에 액세스 할 수 없거나 비어있는 것을 확인했으며 TSOAPAttachment.CacheFile도 비어 있습니다. 따라서 SourceStream을 사용할 때마다 액세스 위반 오류가 반환됩니다.
  • 첫 번째 요청에 의해 임시 폴더에서 생성 된 BorlandSoapAttachment (n) 파일이 여전히 존재하고 잠긴 상태 (요청이 정상적으로 완료되면 삭제해야 함) 및 다음과 같은 BorlandSoapAttachment (n + 1) 파일이 발견되었습니다. 요청이 쌓이고 있습니다.
  • SOAP 서버는 IIS를 다시 시작하거나 응용 프로그램 풀을 재생 한 후에 다시 작동합니다.
  • 동일한 시스템이이 네트워크 외부에서 실행되면 정상적으로 작동하므로 프록시 또는 사용자의 네트워크로 인해 발생하는 것이 확실합니다.
  • 더 많은 미스테리를 추가하려면 같은 프록시 뒤의 WinXP에서 응용 프로그램을 실행해도 전혀 문제가 없습니다!

우리가이 상황에서 당분간 붙어있는 것이므로 매우 도움이되거나 도움이됩니다.

미리 감사드립니다. 당신은 당신이 Windows 7에서 구체적으로 실패 할 수 코드의 조각을 발견 할 시도하는 첨부 파일을 처리하는 모든 서버 로직을 디버깅 정말 확실한 경우

답변

1

, 내가 제안 :

1) 일부 네트워크 스니퍼를 사용하여 Wireshark is good for this task, 동일한 데이터/매개 변수 값을 갖는 두 개의 후속 요청을 작성하고 HTTP 내용을 비교하십시오. 이 분석은 클라이언트에서 (데이터가 항상 동일한 내용으로 클라이언트 시스템을 나가는 지 확인하기 위해) 그리고 서버에서도 들어오는 데이터를 분석해야합니다.

2) 나는 과거에도 비슷한 상황에 직면 해 있었고 실제로 문제를 이해하려는 나의 시도는 성공적이지 못했습니다. Base64로 인코딩 된 문자열 매개 변수로 파일을 보내고 SOAP 첨부 파일을 사용하지 않는 문제를 해결했습니다. Base64를 사용하면 부작용이 발생하여 전송할 데이터 크기가 ~ 30 % 증가합니다. 대용량 파일을 전송하는 경우이 문제가 심각 할 수 있습니다.

SOAP 첨부 파일은 서버에 임시 파일을 만들고 Windows 7은 Windows XP와는 다른 파일 액세스 규칙을 가지고 있습니다. 이것이 첫 번째 호출이 다른 프로세스가 아닌 다른 프로세스를 설명 할 수 있는지는 모르지만 파일 액세스와 관련된 것이있을 수 있습니다.

1

Win 7에서 UAC (사용자 액세스 제어) 문제 일 수 있습니다. 클라이언트를 "관리자 권한으로"실행하여 제대로 작동하는지 확인하십시오.

+0

하지만 회사 네트워크 외부에서 실행되는 동일한 시스템 설정과 동일한 사용자 설정이 제대로 작동하므로 프록시/방화벽이 거의 확실합니다. 하지만 왜 Win7에서 일어날 지 설명 할 수 없었습니다. win7이 회사 네트워크에서 다르게 행동합니까? – sfx

관련 문제