2016-12-12 16 views
0

외부 소스에 대한 서비스 참조에 몇 가지 문제가 있습니다 (Visual Studio 2015에서 제공된 wsdl을 사용하여 추가).WSDL에 의해 생성 된 서비스 참조가 null을 반환 함

상황은 내가 실행 한 요청이 서버에 정상적으로 도달 한 것으로 보입니다. 나는 또한 예상 된 XML 형식 (TextWriterTraceListener 추가)의 응답을 얻는 것 같다. 하지만 코드에서 OutType 클래스 (이 경우 GetBankCertificateOutType)는 항상 null입니다.

설명을 위해 만들어진 콘솔 응용 프로그램은 공개 테스트 계정을 사용하여 매우 간단합니다. 다음과 같이 보입니다.

static void Main(string[] args) 
     { 
      //instantiates client from the service reference 
      var client = new PkiServicePortTypeClient(); 

      var time = DateTime.UtcNow; 
      Random r = new Random(); 
      string reqId = r.Next(100, 999).ToString(); 

      var outType = client.GetBankCertificate(*full params on github*); 

      //This line will throw nullexception since outType is always null 
      //BUT a valid response is actually received (although returning aa application statusCode that represents error at this stage) 
      var response = outType.GetBankCertificateResponse; 
     } 

필자는 문제를 찾으려고 시도했지만 실패했습니다. 그래서 누군가가 이것을 디버깅하는 방법에 대한 좋은 팁을 가지고 있는지 또는 해결책이 있는지 알고 싶었습니다.

here 인 이슈를 설명하기 위해 최소한의 콘솔 샘플 프로젝트 (소스 wsdl 포함)를 만들었습니다.

답변

2

나는 다운로드 솔루션을 검사하고, 내가 다시 (NULL 대신) 올바른 값을 가지고 GetBankCertificateRequestid 값으로 연주 후 나는 trace.log

GetBankCertificateRequest at tribute {http://www.w3.org/XML/1998/namespace}id had invalid value '360817' of type '{http://www .w3.org/2001/XML Schema}ID' 

이 발견했습니다.

var outType = client.GetBankCertificate(new GetBankCertificateInType { 
      RequestHeader = new RequestHeaderType { 
       SenderId = "360817", 
       CustomerId = "360817", 
       RequestId = reqId, 
       Environment = EnvironmentType.test, 
       EnvironmentSpecified = true, 
       InterfaceVersion = "1", 
       Timestamp = time 
      }, 
      GetBankCertificateRequest = new GetBankCertificateRequest { 
       BankRootCertificateSerialNo = "1111110002", 
       //id = "", 
       RequestId = reqId, 
       Timestamp = time 
      } 
     }); 

어떤 xml 유형의 주석 (xml:id)를 제외하고 문서 (PKI service description v2.3.pdf)에 따라이 속성에 대한 설명이 없습니다. 구체적인 스키마 설명이 없습니다.

+0

귀하의 절대적으로 옳았습니다. 나는 메시지를 보았지만 해석은 서버가 그것을 거부했기 때문에 발생했다. 역 직렬화 문제를 야기하지는 않았다. 덕분에 많이, 나는 서비스 참조를 디버깅하려고하는 동안 얼굴에 바로 쳐다 보았다 :). – Baserz