Pergunta

Estou tentando se auto-hospedar um serviço WCF da WCF e fornecer um terminal HTTP com suporte para Ajax. Praticamente tudo o que encontrei sobre o WCF e o Ajax estão falando sobre o IIS, que eu não quero usar.

Construí um aplicativo de console simples para hospedar o serviço. Meu serviço tem apenas um único método:

[ServiceContract]
interface IMyService
{
    [OperationContract]
    string TestConnection();
}

E aqui está o código app.config:

<services>
  <service name="Service.MyService" behaviorConfiguration="MyServiceBehavior" >
    <endpoint address="" binding="webHttpBinding" behaviorConfiguration="WebBehavior" contract="Service.IMyService" />
    <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
  </service>
</services>

<behaviors>
  <endpointBehaviors>
    <behavior name="WebBehavior">
      <enableWebScript/>
    </behavior>
  </endpointBehaviors>
  <serviceBehaviors>
    <behavior name="MyServiceBehavior" >
      <serviceMetadata httpGetEnabled="true" />
    </behavior>
  </serviceBehaviors>
</behaviors>

Posso acessar o terminal de metadados do serviço e ver o WSDL, mas não consigo usá -lo no meu cliente Ajax. Então, minha pergunta é: 1. É possível fazer isso? 2. Qual é a configuração necessária que estou obviamente perdendo?

NOTA Não estou usando um arquivo .svc

Obrigado!

Foi útil?

Solução

Qual é o seu cliente? Com o EnableWebScript, você está recebendo suporte ASP.NET AJAX (por exemplo, membros decorados, tipos e toda a gosma que implica). Se você deseja JSON "RAW", use o comportamento WebHTTP em vez de EnableWebScript e marque suas operações de interface com WebInvOKeattribute ou WebgetAttribute (definindo os tipos de solicitação/resposta para JSON ou XML como desejar). Também parece que você não atribuiu sua interface com o ServiceCoRtraTattribute, o que é necessário.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top