Usuário com melhor resposta
Consumir um WCF Restful em uma aplicaçao regular .net

Pergunta
-
Bom dia,
Seguindo um Tutorial eu criei um Wcf para ser consumido por uma aplicaçao android usando o padrao Json/RestFul,
agora eu gostaria de usar esse serviço em um web site .aspx
porem quando adiciono as referencias do serviço, este nao cria os behaviors, endpoint ou bindings
e apos eu coloca-los manualmente no web.config
recebo o erro de que "Nao havia ponto de extremidade no meu servico"
web.config do meu serviço
<?xml version="1.0"?> <configuration> <connectionStrings> </connectionStrings> <system.web> <compilation debug="true" targetFramework="4.0" /> </system.web> <system.serviceModel> <bindings> <webHttpBinding> <binding name="big_webHttpBinding" maxReceivedMessageSize="4097152" maxBufferSize="4097152" maxBufferPoolSize="4097152"> <readerQuotas maxStringContentLength="4097152" maxArrayLength="4097152" maxBytesPerRead="4097152" maxNameTableCharCount="4097152" maxDepth="4097152"/> </binding> </webHttpBinding> </bindings> <behaviors> <endpointBehaviors> <behavior name="httpBehavior"> <webHttp /> </behavior> </endpointBehaviors> <serviceBehaviors> <behavior> <serviceMetadata httpGetEnabled="true" /> <serviceDebug includeExceptionDetailInFaults="false" /> </behavior> </serviceBehaviors> </behaviors> <serviceHostingEnvironment multipleSiteBindingsEnabled="true" /> <services> <service name="ListaTarefa.WCF.Tarefa"> <endpoint address="" behaviorConfiguration="httpBehavior" binding="webHttpBinding" contract="ListaTarefa.WCF.ITarefa" /> </service> </services> </system.serviceModel> <system.webServer> <modules runAllManagedModulesForAllRequests="true"/> </system.webServer> </configuration>
Interface do serviço
[OperationContract] [WebGet( UriTemplate = "GetFabrica/{ID_Fabrica}", BodyStyle = WebMessageBodyStyle.WrappedRequest, ResponseFormat = WebMessageFormat.Json, RequestFormat = WebMessageFormat.Json)] IList<CD_Fabrica> ConsultarFabrica(string ID_Fabrica);
Alguem poderia me dar uma ajuda nesse aspecto?
Respostas
-
Boa tarde plcart,
você não pode adicionar uma referência a partir de um serviço REST, como faria utilizando SOAP. Quando você utiliza SOAP seu serviço expõe Metadata (WSDL ou MEX) que serve exatamente para dizer ao cliente como ele deve gerar a referência para consumir seu serviço.
Sugiro que você crie um novo endpoint utilizando SOAP para consumir o serviço em sua aplicação .NET. Vale lembrar que você pode expor os mesmos métodos em mais de um endpoint.
Abraços,
Daniel Cheida de Oliveira- Sugerido como Resposta Daniel Cheida segunda-feira, 31 de outubro de 2011 16:10
- Marcado como Resposta plcart segunda-feira, 31 de outubro de 2011 17:08
Todas as Respostas
-
Boa tarde plcart,
você não pode adicionar uma referência a partir de um serviço REST, como faria utilizando SOAP. Quando você utiliza SOAP seu serviço expõe Metadata (WSDL ou MEX) que serve exatamente para dizer ao cliente como ele deve gerar a referência para consumir seu serviço.
Sugiro que você crie um novo endpoint utilizando SOAP para consumir o serviço em sua aplicação .NET. Vale lembrar que você pode expor os mesmos métodos em mais de um endpoint.
Abraços,
Daniel Cheida de Oliveira- Sugerido como Resposta Daniel Cheida segunda-feira, 31 de outubro de 2011 16:10
- Marcado como Resposta plcart segunda-feira, 31 de outubro de 2011 17:08
-
Após pesquisa percebi que a forma de se trabalhar com serviços Rest é diferente até mesmo no aspx
a minha soluçao foi a seguinte:
nao precisei alterar em nada meu serviço
WebClient objClient = new WebClient(); XmlDocument xmlResponse = new XmlDocument(); XmlDictionaryReader xmlReader = JsonReaderWriterFactory.CreateJsonReader(objClient.OpenRead("http://192.168.1.245/ListaTarefa.WCF/Tarefa.svc/GetFabrica/0"), XmlDictionaryReaderQuotas.Max); xmlReader.Read(); xmlResponse.LoadXml(xmlReader.ReadOuterXml()); XDocument xdocResult = Document.Parse(xmlResponse.OuterXml); List<CD_Fabrica> lstFabrica = (from f in xdocResult.Root.Elements() select new CD_Fabrica { DE_Fabrica = f.Element("DE_Fabrica").Value, ID_Fabrica = f.Element("ID_Fabrica").Value }).ToList();
-
Boas,
Você pode recorrer ao WCF REST Starter Kit (http://www.israelaece.com/post/WCF-REST-Starter-Kit.aspx) enquanto o WCF Web API não está disponível.
http://www.israelaece.com