ホントはRestとNamedPipeをやりたかったけど、IIS7.0がいるって事らしいのであきらめました。
なんで、SoapとRestの共通化(?)する方法。
まず、適当なWcfサービスを作って、「System.ServiceMode.Web」を参照設定する。
InterfaceにUsing System.ServiceMode.Web; なんて書いてGetMessageなんてメソッドを作る。
この時、Attributeに「WebGet」をつける。
- [WebGet(UriTemplate = "GetMessage/{key}/")]
- [OperationContract]
- string GetMessage(string key);
- public string GetMessage(string key)
- {
- return "IService1.GetMessage + " + key;
- }
- <behaviors>
- <servicebehaviors>
- <behavior name="WcfService1.Service1Behavior">
- <servicemetadata httpgetenabled="true">
- </servicemetadata></behavior>
- </servicebehaviors>
- <endpointbehaviors>
- <behavior name="WcfService1.Service1Behavior">
- </behavior>
- <behavior name="WcfService1.Service1RestBehavior">
- <webhttp>
- </webhttp></behavior>
- </endpointbehaviors>
- </behaviors>
- <services>
- <service behaviorconfiguration="WcfService1.Service1Behavior" name="WcfService1.Service1">
- <endpoint address="Soap" behaviorconfiguration="WcfService1.Service1Behavior" binding="basicHttpBinding" name="SoapEP" contract="WcfService1.IService1">
- <endpoint address="Rest" behaviorconfiguration="WcfService1.Service1RestBehavior" binding="webHttpBinding" name="RestEP" contract="WcfService1.IService1">
- <endpoint address="mex" binding="mexHttpBinding" name="Mex" contract="IMetadataExchange">
- </endpoint></endpoint></endpoint></service>
- </services>
addressのあたりをユニークに設定するとうまくいくらしい。
で、これを使うWebサイトを作って、Web参照すると普通にSoapで使える。
ブラウザから「http://localhost:8080/Service1.svc/Rest/GetMessage/TestMessage/」なんて打てば、
「
こんなレスポンスがもらえると。