web-dev-qa-db-ja.com

オプションのパラメーターを使用したWebサービスメソッド

可能性のある複製:
ASP.NETのオプションパラメータを指定できますかSOAP Webサービス

私はこれを探してみましたが、私がやりたいことの正しい解決策を見つけることができません。これは以前に尋ねられたことを知っているので、繰り返しごめんなさい。次のようなオプションのパラメータが必要なWebサービスメソッドがあります。

public void MyMethod(int a, int b, int c = -3)

Nullableパラメータを使用できないことは既にわかっているので、デフォルト値を使用しようとしています。問題は、引数cを指定せずにこのメソッドを呼び出すと、例外が発生することです。実際にオプションであると指定する必要がある場所はありますか?

ありがとう

25
Steve Kiss

オーバーロードとMessageNameプロパティを使用して、オプションのパラメーターを実現できます。

[WebMethod(MessageName = "MyMethodDefault")]
public void MyMethod(int a, int b)
{
      MyMethod( a, b, -3);
}

[WebMethod(MessageName = "MyMethod")]
public void MyMethod(int a, int b, int c)

これが機能するためには、変更する必要があるかもしれません

[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] 

[WebServiceBinding(ConformsTo = WsiProfiles.None)] 

まだ行っていない場合は、WS-I Basic Profile v1.1はオーバーロードを許可しません

26
Markis

オーバーロードメソッドを使用します。

[WebMethod(MessageName = "MyMethod1")]
public void MyMethod(int a, int b)
{
    return MyMethod(a, b, -3);
}

[WebMethod(MessageName = "MyMethod2")]
public void MyMethod(int a, int b, int c)
{
}
10
abatishchev

以前にオプションのパラメーターなどを調べたことがありますが、asmx Webサービスはこれをサポートしていません(デフォルトで生成されたWSDLを使用)。ただし、WCFでは、データコントラクトのパラメーターをIsRequired = falseとしてマークできます- ASP.NET Webサービスのオプションパラメーター を参照してください

3
Chris Pont