実際の製品では、より多くのオプションパラメータを持つことになりますが、2つのオプションパラメータで.Net Webサービスを使用してダミーWebサービスを作成しました。クエリ用のフィルタ)。問題は、Webサービスを呼び出すときにオプションのパラメータを省略することができないということです。つまり、実際のWebサービスに対して開発する際に、Webサービスへの呼び出しごとに数十のNULL値が存在する可能性があります。C#でオプションのパラメータを使用してWeb参照からWebメソッドを呼び出す
今のところ、このダミーWebサービスは2つの、オプションの文字列パラメータをサポートするために、これだけで構成されています
<s:element minOccurs="0" maxOccurs="1" name="PARAM_1" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="PARAM_2" type="s:string"/>
:それは確かにMINVALUE 0とMAXVALUE 1でこれらのパラメータを表示するWSDLでは
[WebMethod]
public string HelloWorld(String PARAM_1="", String PARAM_2="")
{ return ""; }
問題はここにあります:Visual Studio 2010のWeb参照を介してこのWebサービスを追加すると、実際にはHelloWorldメソッドでサービスオブジェクトが作成されます。ただし、オプションのパラメータは考慮されていません。オプションのパラメータを持たないHelloWorld関数を作成します。これは常にPARAM_1とPARAM_2の両方を必要とするため、実際に使用したいものにかかわらず、オプションのパラメータはNULLで埋めなければなりません。
public string HelloWorld(string PARAM_1, string PARAM_2) {
object[] results = this.Invoke("HelloWorld", new object[] { PARAM_1, PARAM_2});
オプションのパラメータの潜在的な数十をNULLに強制されることなく、VS2010でのオプションのパラメータを持つWebサービスを使用する方法があります:定義VS2010は、Web参照の外に生成
は、問題を示す、これでありますすべての呼び出しで?私たちはいつもこれをやらなければならないVisual Studioで便利なウェブリファレンスを使い続けたいと思っています。
問題の解決策ではありませんが、Web参照の代わりにサービス参照を使用するのはなぜですか? Web参照は従来の技術であり、新しいコードには使用しないでください。 –