私はこれを探してみましたが、私がやりたいことの正しい解決策を見つけることができません。これは以前に尋ねられたことを知っているので、繰り返しごめんなさい。次のようなオプションのパラメータが必要なWebサービスメソッドがあります。
public void MyMethod(int a, int b, int c = -3)
Nullableパラメータを使用できないことは既にわかっているので、デフォルト値を使用しようとしています。問題は、引数cを指定せずにこのメソッドを呼び出すと、例外が発生することです。実際にオプションであると指定する必要がある場所はありますか?
ありがとう
オーバーロードと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
はオーバーロードを許可しません
オーバーロードメソッドを使用します。
[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)
{
}
以前にオプションのパラメーターなどを調べたことがありますが、asmx Webサービスはこれをサポートしていません(デフォルトで生成されたWSDLを使用)。ただし、WCFでは、データコントラクトのパラメーターをIsRequired = falseとしてマークできます- ASP.NET Webサービスのオプションパラメーター を参照してください