2

配列()とnull許容配列()をパラメーターとして.asmx受け取るメソッドを持つASP.NET Webサービス( )があります。また、サービスリファレンスを介してこのWebサービスを利用するためのテストWebアプリケーションもあります。intint[]intint?[]

問題は、Webサービスコードで何かを変更し、それを再コンパイルして、テストアプリケーションでサービス参照を更新するたびに、テストアプリケーションのWebサービスメソッドに対して異なるタイプのパラメーターが生成されることです。例えば:

最初のビルドとサービスの更新時に、テストアプリでVisualStudioによって生成されるメソッドシグネチャは次のとおりです。

void MyMethod(int[] firstParam, int?[] secondParam)

次に、いくつかの変更を加え、もう一度実行して、次のようなものを取得します。

void MyMethod(ArrayOfInt fistParam, ArrayOfInt1 secondParam)

(とArrayOfInt同等でint[]ありArrayOfInt1、と同等であるint?[])。

もう一度、そして私は得る:

void MyMethod(ArrayOfInt1 firstParam, ArrayOfInt secondParam)

withArrayOfIntArrayOfInt1swaped(ArrayOfInt1現在はと同等でint[]ありArrayOfInt、と同等ですint?[])。



私が本当に望んでいるのは、単純な型int[]int?[]型を使用することです(サービス参照を何度も再コンパイルして更新しても!)。どうすればこれを達成できますか?

4

2 に答える 2

0

Visual Studioを使用する代わりに、wsdl.exeツールを使用してWebサービスプロキシを生成してみてください。

この作品は私のために!

于 2011-11-28T17:24:01.313 に答える
0

私はこれが古いことを知っていますが、私はちょうど同じ問題に遭遇しました。私にとっての違いは、サービス参照ではなくWeb参照を追加することでした。

VS内で、以下を実行します。

  1. 右クリックして、[追加]>[サービス参照]を選択します
  2. 左下の[詳細設定]ボタンをクリックします
  3. 左下の[Web参照の追加]ボタンをクリックします
  4. URLと参照名を追加し、[参照の追加]をクリックします

私のWebリファレンスは、int[]パラメータを使用してメソッドを適切に追加しました。

編集: これは説明するためのきれいな写真でより良い答えです!

編集2: この答えは愚かさArrayOfXXXを取り除き、レガシー技術を使用ないので、私に関する限り、win-winです。さて、ツール内でこれを行う方法は?それとも、ファイルを直接編集することでできることだけですか?List<XXX>

于 2014-11-21T20:56:23.717 に答える