ものがたり(旧)

atsushieno.hatenablog.com に続く

ASP.NET 2.0のBasic Profile 1.1違反を直す方法

ASP.NET 2.0のSOAPサービスは、特に?WSDLパラメータを付けたリクエストで返されるWSDLファイルを見ると分かりやすいのだけど、Basic Profile 1.1のR2401に違反している。

R2401
A wsdl:binding element in a DESCRIPTION MUST use WSDL SOAP Binding as defined in WSDL 1.1 Section 3.

この定義にもかかわらず、HTTP GETとHTTP POSTを受け付けてしまうためである。

というわけで、サポートしているプロトコルからSOAP以外の全てを削除しなければならない。

ちなみに、.NET 2.0のSystem.Web.Services.Description.WebServicesInteroperabilityにはバグがあって、これをちゃんと検出しないので、wsdl.exeを信用してはならない。他のツールを使用すれば良い。