ASP.NET Webサービスで、引数に独自のクラスを用いたWebメソッドを作成。しかし、メソッド呼び出し側から「WSDLの定義で1階層余計なタグが入るのをやめてほしい」との要望。そもそも呼び側がなんで仕様を決めるんだよ……というのもあるのですが……。一応調査。
Webメソッドの属性「SoapDocumentMethod」のプロパティで、ParameterStyleというのを「Bare」に設定すると、メソッド名タグで引数を1段包み込むというのをなしにできるようなのですが…
[SoapDocumentMethod(Use = SoapBindingUse.Literal, ParameterStyle = SoapParameterStyle.Bare)]
引数がクラスだと駄目でした……(そのままだと駄目なだけ、かも。なにか設定が足りないのかも)。
ちなみにこういうエラーが出ます。
最上位の XML 要素 'campanyInfo' が、明示型である ***.WebService.Data.***Info および System.String[] を参照しています。XML 属性を使用して、この要素または型の 代わりとなる別の XML 名または名前空間を指定してください。