2010-02-05 3 views
0

들어오는 매개 변수를 무시하는 것으로 보이는 ASP.Net 2 asmx webservice의 문제를 해결하는 방법을 알아내는 데 도움이 필요합니다.들어오는 매개 변수를 삭제하는 ASMX Webservice

문자열을 사용하고 SAP API로 약간의 작업을 수행하며 연산 결과를 문자열로 반환하는 ASMX 서비스가 있습니다. 그것은 dev 환경에서 잘 작동하지만 들어오는 매개 변수를 수신하지 않는 것 때문에 생산에 실패합니다. 여기

이 대표 코드입니다 : 소비 코드

, "TextIdentifier"는 다음과 같이 웹 메소드가 선언

SAPProxyWebService.SAPProxyWebService webservice = new SAPProxyWebService.SAPProxyWebService(); 
return webservice.GetEncodedText(TextIdentifier); 

웹 서비스를 호출하는 방법에 전달있어하는 문자열입니다 :

[WebMethod()] 
public string GetEncodedText(string TextIDString) 
{ 
    do some stuff with TextIDString; 
    return results; 
} 

웹 메서드를 호출하는 메서드 내에서 TextIdentifier의 값을 기록 할 때 예상 값을 얻습니다. 사실, 나는 웹 메소드 호출과 같은 줄에 그것을 기록 할 때 예상되는 입력을 봅니다.

그러나 다른 작업을 수행하기 전에 webMethod에서 TextIDString 매개 변수를 로그하면 null입니다. 웹 메서드 내에서 특정 값을 하드 코딩하면 하드 코딩 된 값에 대한 결과를 얻을 수 있습니다.

웹 메서드가 들어오는 매개 변수를 "잃어 버릴"수있는 원인은 무엇입니까?

+0

추가 메모로서 테스트 양식을 사용하여 웹 서비스를 호출 할 때도 정상적으로 작동합니다. – cori

+0

조금 더 자세하게; 내 컴퓨터에서이 서비스를 사용하는 클라이언트를 내 컴퓨터, 실행 준비 상자 및 프로덕션 상자에서 실행중인 서비스의 복사본에 대해 실행하면 서비스가 예상대로 작동합니다. 차례대로 각 보고서에 대해 보고서를 실행할 때 모든 경우에 올바르게 작동합니다. 보고서 * 및 * 웹 서비스가 생산 될 때만 작동을 멈 춥니 다. – cori

답변

0

그래서 근본 원인이 무엇인지, 내 문제의 어떤 부분이 실제로 문제를 해결했는지 확신 할 수 없지만 웹 서비스를 다른 위치에 배포하고 클라이언트 거기 도서관. 나는 dev/testing 아키텍처를 통해 보고서 (클라이언트 라이브러리 포함)를 배포했으며 모든 것이 잘 동작했다. 그런 다음 원래 위치에 웹 서비스를 다시 배치 한 다음 아키텍처를 통해 보고서와 라이브러리를 배치하고 보고서를 원래 위치의 웹 서비스와 함께 사용했습니다.

내 생각에 클라이언트 라이브러리/보고서가 캐시 된 버전의 서비스 정의를 사용하고있을 가능성이 있습니다. 무슨 일이 일어나고 있는지를 기록하기 위해 서비스를 수정하면서 예외를 던지고있는 코드의 위치 (Null 참조 예외)가 이동하고 보고서가 새 위치를 반영하게된다는 점이 의미가 없습니다. 즉, 라인 번호)를 실행해야합니다.

1

Fiddler을 사용해 보셨습니까? SOAP/클라이언트와 서버 사이에서 진행되는 모든 패킷을 볼 수 있어야합니다.

+0

좋은 생각이지만 실제로 소비자는 웹 서비스 호출을 처리하기 위해 작은 구성 요소를 사용하는 SQL보고 서비스 보고서입니다. 웹 서비스에 대한 호출은보고 서비스 상자 및 웹 서버 상자에서 발생하므로 Fiddler와 중개하기가 쉽지 않습니다. – cori

관련 문제