制御文字() が使えないようです。てな訳で実験してみました。
制御文字を返す WebService を作成し、VisualStudio の Web 参照の追加からを呼び出してみる。
using System.Web.Services; namespace WebService1 { /// <summary> /// Service1 の概要の説明です /// </summary> [WebService(Namespace = "http://tempuri.org/")] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] [System.ComponentModel.ToolboxItem(false)] // この Web サービスを、スクリプトから ASP.NET AJAX を使用して呼び出せるようにするには、次の行のコメントを解除します。 // [System.Web.Script.Services.ScriptService] public class Service1 : System.Web.Services.WebService { [WebMethod] public string HelloWorld() { return ((char)1).ToString(); } } }Client
using System; namespace ConsoleApplication17 { class Program { static void Main(string[] args) { localhost.Service1 service = new ConsoleApplication17.localhost.Service1(); Console.WriteLine(service.HelloWorld()); Console.ReadKey(); } } }
これで、InvalidOperationException が発生する。
ちなみに、Service 参照(WCF) では、例外が発生しなかった。
Client
using System; namespace ConsoleApplication17 { class Program { static void Main(string[] args) { ServiceReference1.Service1SoapClient client = new ConsoleApplication17.ServiceReference1.Service1SoapClient(); Console.WriteLine(client.HelloWorld()); Console.ReadKey(); } } }
XML 使ってる人は、やっぱある程度仕様書とか読んでるのかな?てか読まなきゃダメだよなと実感しました。
使ってる技術の仕様って全然押さえてない。
C# とか CLR の仕様 ( 共通言語ランタイム (CLR) ) もちゃんと読んだ事ないし、Java の VM の仕様とか資料 ( www.ingrid.org ) なんて見た事もない。
本とか Web とかでそれっぽいページを見ては、試してるだけなのかなと反省中。。
なんか以前読んだ 「手順」ではなく「構造」を知ろうぜ! - Fight the Future を思い出した。
だけど少なくとも今後 xml を使う場合、制御文字がデータに含まれるテストケースも実装するだろうと。この失敗を覚えているから。