LoginSignup
1
2

More than 5 years have passed since last update.

Soapメソッドを呼び出そうとしたら「Webサービスメソッド名は有効ではありません」とか言われた

Posted at

いや、ありますよ

呼び出そうとしたのはこれ

WebService.cs
[SoapRpcMethod("urn:zola2/getStatus", RequestNamespace = "urn:zola2", ResponseNamespace = "urn:zola2")]
[return: SoapElement("Result")]
public string GetStatus()
{
    object[] results = this.Invoke("getStatus", Enumerable.Empty<object>().ToArray());
    return ((string)(results[0]));
}

でもこんなエラーが出る
image

いや、WSDLにメソッドがあることも確認したし

<operation name="getStatus">
 <documentation>Gets status</documentation>
 <input message="tns:getStatusRequest"/>
 <output message="tns:getStatusResponse"/>
</operation> 

大文字小文字もあってるし…
Attributeもあってるし…
ヽ(`Д´)ノウワァァァン

結局、こうだった

Webサービスメソッド名とC#のコード内のメソッド名が大文字小文字含めて同一でないといけないのね…。

WebService.cs
[SoapRpcMethod("urn:zola2/getStatus", RequestNamespace = "urn:zola2", ResponseNamespace = "urn:zola2")]
[return: SoapElement("Result")]
public string getStatus()
{
    object[] results = this.Invoke("getStatus", Enumerable.Empty<object>().ToArray());
    return ((string)(results[0]));
}

Pascal形式じゃないので見た目がC#的にちょっとあれだけど、仕方ない、か。

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2