2016-12-12 11 views
0

外部ソースへのサービス参照にいくつか問題があります(Visual Studio 2015で提供されているwsdlを使用して追加しました)。WSDLで生成されたサービス参照がnullを返す

状況は、実行しているリクエストがサーバーに正常に届いているようです。私はまた、期待されたXML形式(TextWriterTraceListenerを追加)の応答を得るようです。しかし、OutTypeクラスはコードに戻ります(この場合、GetBankCertificateOutTypeは常にnullです)。

説明するために作成されたコンソールアプリケーションiveは、パブリックテストアカウントを使用して非常に簡単です。次のようになります。

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; 
     } 

Iveは問題を特定しようとしましたが、失敗しました。誰かがこれをデバッグする方法についての良いヒントを持っているのか、それとも解決策があるのか​​を見たいと思っていました。

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

関連する問題