■ WSE3.0のインストール
   
   サンプルコードをビルドするためには、WSE 3.0 (MTOM形式で通信するためのライブラリ)を
   別途インストールする必要があります。
   
   下記のURLからダウンロードして、インストールしてください。
   
   [Web Services Enhancements (WSE) 3.0 for Microsoft .NET]
   http://www.microsoft.com/downloads/details.aspx?familyid=018A09FD-3A74-43C5-8EC1-8D789091255D&displaylang=en

■ 『Web参照の追加』を行った場合の手順

   『Web参照の追加』でWebサービスを呼び出すコードを自動生成した場合は、以下の手順が必要です。

   1. 自動生成された Reference.cs の継承元クラス名(SoapHttpClientProtocol)を
      WSE3.0 のクラス(WebServicesClientProtocol)に変更してください。
      
      【例】
      
      変更前) public partial class AttachmentService : System.Web.Services.Protocols.SoapHttpClientProtocol {
      変更後) public partial class AttachmentService : Microsoft.Web.Services3.WebServicesClientProtocol {
      
      ※ 自動生成されたクラス名「AttachmentService」は、使用したWSDLの内容によって異なる場合があります。
      
   2. Reference.cs に GetWebResponseメソッド、GetReaderForMessageメソッド のオーバーライドを追加してください。
      (サンプルコードの65行目〜94行目)
      
      また、追加したメソッドで使用しているクラスの名前空間も追加してください。
      (サンプルコードの24行目〜27行目)
      
      --------------------------------------------------------------------------------
      24:    using System.Net;
      25:    using System.IO;
      26:    using System.Xml;
      27:    using System.Text.RegularExpressions;
      
      〜(中略)〜
      
      65:        protected override WebResponse GetWebResponse(WebRequest request)
      66:        {
      67:            //return base.GetWebResponse(request);
      68:
      69:            WebResponse webResponse = base.GetWebResponse(request);
      70:
      71:            webResponse.Headers["Content-Type"] = "text/xml";
      72:
      73:            return webResponse;
      74:        }
      75:
      76:        protected override XmlReader GetReaderForMessage(SoapClientMessage message, int bufferSize)
      77:        {
      78:            //return base.GetReaderForMessage(message, bufferSize);
      79:
      80:            string envelope = string.Empty;
      81:
      82:            using (StreamReader sr = new StreamReader(message.Stream))
      83:            {
      84:                Regex regex = new Regex("<soap.*:Envelope.*>.*</soap.*:Envelope>", RegexOptions.IgnoreCase);
      85:                Match match = regex.Match(sr.ReadToEnd());
      86:
      87:                if (match.Success)
      88:                {
      89:                    envelope = match.Value;
      90:                }
      91:            }
      92:
      93:            return XmlReader.Create(new StringReader(envelope));
      94:        }
      --------------------------------------------------------------------------------

