Restful service consuming WCF self hosted service -


i working application using restful service. there application has self hosted wcf service running. consume self hosted service restful service i'm running issue. getting (405) method not allowed.

here how self hosted service created , hosted

servicehost host = new servicehost(typeof(liveservice)); host.open(); 

here how trying consume function in restful service

binarymessageencodingbindingelement binarymessageencoding = new binarymessageencodingbindingelement(); httptransportbindingelement httptransport = new httptransportbindingelement() { maxbuffersize = int.maxvalue, maxreceivedmessagesize = int.maxvalue }; custombinding servicecustombinding = new custombinding(binarymessageencoding, httptransport);  endpointaddress serviceendpointaddress = new endpointaddress(string.format("http://{0}/liveservice", host));  livewebserviceclient client = new livewebserviceclient(servicecustombinding, serviceendpointaddress); 

here example of service

[servicecontract] public interface iliveservice {     [operationcontract]     string hello(); }  public string hello() {     return "hello"; } 

i did research , i'm guessing because i'm calling restful service. have tried using [webget()] , [webinvoke(method="get")] didnt seem make difference. not sure missing.

i have tried simulate scenario (from whatever comprehend description) , worked fine -

self hosted service code

 namespace selfhostedservice   {    [servicecontract]    internal interface iliveservice     {       [operationcontract]       string hello();     }  public class liveservice:iliveservice {     public string hello()     {         return "hello";     } } }         static void main(string[] args)     {         var binarymessageencoding = new textmessageencodingbindingelement();         var httptransport = new httptransportbindingelement() { maxbuffersize = int.maxvalue, maxreceivedmessagesize = int.maxvalue };         var servicecustombinding = new custombinding(binarymessageencoding, httptransport);          servicehost host = new servicehost(typeof(liveservice), new uri("http://localhost:3239/liveservice"));         host.addserviceendpoint(typeof (iliveservice), servicecustombinding, "");         var smb = new servicemetadatabehavior();         smb.httpgetenabled = true;         host.description.behaviors.add(smb);         host.addserviceendpoint(servicemetadatabehavior.mexcontractname, metadataexchangebindings.createmexhttpbinding(), "mex");          host.open();         console.readline();     } 

restful service call self hosted service after adding reference self hosted service -

[servicecontract] public interface iservice1 {      [operationcontract]     [webinvoke(method = "get", requestformat = webmessageformat.json, bodystyle = webmessagebodystyle.wrapped)]   }      public string returnfromselfhostservice()     {         var binarymessageencoding = new textmessageencodingbindingelement();         var httptransport = new httptransportbindingelement() { maxbuffersize = int.maxvalue, maxreceivedmessagesize = int.maxvalue };         var servicecustombinding = new custombinding(binarymessageencoding, httptransport);         var serviceendpointaddress = new endpointaddress(string.format("http://{0}/liveservice", "localhost:3239"));          var client = new liveserviceclient(servicecustombinding, serviceendpointaddress);         return client.hello();      }     string returnfromselfhostservice();  } 

it returns me

 <returnfromselfhostserviceresponse xmlns="http://tempuri.org/">   <returnfromselfhostserviceresult>hello</returnfromselfhostserviceresult>    </returnfromselfhostserviceresponse> 

Comments