0

単一の Web メソッドを持つ Web サービスがあります。

[WebMethod]
public string SendInt([XmlElement(IsNullable=false)] int someInt)
{
    return "Hello World";
}

この Web メソッドによって生成される WSDL には、次の行が含まれます。

<s:element name="SendInt">
   <s:complexType>
      <s:sequence>
         <s:element minOccurs="1" maxOccurs="1" name="someInt"   type="s:int"/>
      </s:sequence>
   </s:complexType>
</s:element>

WSDL は、要求パラメーターが minOccurs=1 の値型 (int) であることを明確に示していますが、SoapUI を使用して次の要求を送信している場合:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tem="http://tempuri.org/">
   <soapenv:Header/>
   <soapenv:Body>
      <tem:SendInt>
      </tem:SendInt>
   </soapenv:Body>
</soapenv:Envelope>

someIntパラメーターが欠落していることを示すエラーではなく、サーバーから有効な応答を取得しています。

サーバーでは、 someIntパラメータに 0 の値が割り当てられていることがわかります。

これは正常な動作ですか?

その場合、ユーザーが値 0 を送信したのか、単にこのパラメーターを送信するのを忘れたのか、Web メソッドでどのように知ることができますか?

通常の動作ではない場合、どうすれば修正できますか?

4

1 に答える 1

1

リクエストで要素を指定しているので、そこに値を割り当てていません。int のデフォルト値は 0 なので、これは通常の動作です。この要素を省略すると、無効なリクエストが返されます。このパラメーターを送信するのを忘れた場合、おそらく要素全体が正しく表示されないでしょう。その場合、Web サービスはエラーをスローします。

于 2015-08-08T13:19:22.993 に答える