0

着信パラメーターを無視しているように見える ASP.Net 2 asmx Web サービスの問題をトラブルシューティングする方法を理解するのに助けが必要です。

文字列を受け取り、SAP API を少し操作して、操作の結果を文字列として返す ASMX サービスがあります。開発環境では正常に動作しますが、着信パラメーターを受信して​​いないように見えるため、本番環境では失敗します。

代表的なコード スニペットを次に示します。

消費コードでは、「TextIdentifier」は、Web サービスを呼び出すメソッドに渡される文字列です。

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

Web メソッドは次のように宣言されます。

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

Web メソッドを呼び出しているメソッド内で TextIdentifier の値をログに記録すると、期待値が得られます。実際、Web メソッド呼び出しと同じ行にログを記録すると、予想される入力が表示されます。

ただし、他の操作の前に webmethod 内で TextIDString パラメータをログに記録すると、null になります。Web メソッド内で特定の値をハードコードすると、ハードコードされた値に期待する結果が得られます。

Web メソッドが着信パラメーターを「失う」原因となるものを探す必要がありますか?

4

2 に答える 2

1

Fiddlerを使ってみましたか? クライアントとサーバーの間で行われているSOAP/あらゆるパケットを確認できるはずです。

于 2010-02-05T21:04:03.397 に答える
0

したがって、根本的な原因が何であるか、また修正のどの側面が実際に問題を解決したかは正確にはわかりませんが、最終的にうまくいったのは、Web サービスを別の場所にデプロイし、クライアント ライブラリをそこに向けることでした。 . レポート (クライアント ライブラリを含む) を開発/テスト アーキテクチャにデプロイしたところ、すべて正常に機能しました。次に、Web サービスを元の場所に配置し直し、レポートとライブラリをアーキテクチャ全体に配置すると、レポートは元の場所にある Web サービスで機能しました。

おそらく、クライアント ライブラリ/レポートがサービス定義のキャッシュされたバージョンを使用していたのではないかと考えています。これが意味をなさないのは、サービスを変更して何が起きているかをログに記録していたときに、例外 (Null 参照例外) をスローしていたコード内の場所が移動し、レポートに新しい場所が反映されることです (つまり、同じステートメントが実行されていたコード内の行番号)。

于 2010-02-11T02:56:18.683 に答える