/ / Fazer meu serviço WCF retornar json - asp.net, wcf

Tornar meu serviço WCF retornar json - asp.net, wcf

Eu estou tentando fazer o meu método de serviço WCF para retornar JSON-objeto, mas não funciona, quando eu abro em um navegador da web, ele mostra xml.

Como posso fazer esse método retornar JSON?

Eu inseri [WebGet (ResponseFormat = WebMessageFormat.Json)], mas isso não ajudou

[WebGet(ResponseFormat = WebMessageFormat.Json)]
protected override IEnumerable<KeyValuePair<string, SampleItem>> OnGetItems()
{
// TODO: Change the sample implementation here
if (items.Count == 0)
{
items.Add("A", new SampleItem() { Value = "A" });
items.Add("B", new SampleItem() { Value = "B" });
items.Add("C", new SampleItem() { Value = "C" });
}
return this.items;
}

Respostas:

4 para resposta № 1

Para que isso funcione, você precisa hospedar isso com o webHttpBinding e a WebServiceHostFactory no seu web.config e serviço "s *.svc Arquivo.

Você não mostrou nenhum web.config ou outra configuração - então não posso dizer o que você está fazendo. Mas o formato de resposta JSON no WebGet O atributo só é suportado nos serviços WCF no estilo REST. o WebGet atributo é ignorado para qualquer uma das ligações baseadas em SOAP, por ex. basicHttpBinding, wsHttpBinding, netTcpBinding e assim por diante.

Para obter mais informações sobre os serviços WCF no estilo REST, confira Centro de desenvolvedores do WCF REST e leia sobre como configurar e usar serviços WCF no estilo REST.

Atualizar: para que seu arquivo * .svc funcione corretamente como um serviço REST que usa o WebGet atributo e retorna JSON, você precisa certificar-se de especificar a fábrica de host de serviço correta:

<%@ServiceHost Language="C#" Service="YourService"
Factory="System.ServiceModel.Activation.WebServiceHostFactory" %>

Especificando o WebServiceHostFactory, você está dizendo ao tempo de execução do WCF para usar esse serviço como um serviço REST e, em seguida, todas as outras partes devem se encaixar automaticamente.


0 para resposta № 2

Você também configurou o WebHttpBehaviour? Caso contrário, o WebGet não funciona. Vejo MSDN

E esse atributo se aplica a operações de serviço,métodos não simples. Você não mostra o resto de seus serviços, mas os exemplos que vi usando o WebGet tinham esse atributo na interface (contrato de serviço).