Question

Je suis en train de l'auto-hôte d'un service Web WCF et de fournir un point de terminaison HTTP avec support ajax. À peu près tout ce que j'ai trouvé à propos WCF et AJAX parlent de IIS, que je ne veux pas utiliser.

J'ai construire une application simple console pour héberger le service. Mon service n'ont une seule méthode:

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

Et voici le code 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>

Je peux accéder au point final de métadonnées de service et voir le WSDL, mais je suis incapable de l'utiliser de mon client ajax. Donc, ma question sont: 1. Est-il possible de le faire? 2. Quelle est la configuration nécessaire que je suis évidemment manque?

NOTE Je ne suis pas à l'aide d'un fichier .svc

Merci!

Était-ce utile?

La solution

Quelle est votre client? Avec enableWebScript, vous obtenez le soutien ASP.NET AJAX (par exemple, les membres décorés, les types et toutes les Goo othe qui implique). Si vous voulez « brut » JSON, utilisez le comportement de webHttp au lieu de enableWebScript et baliser vos opérations d'interface avec WebInvokeAttribute ou WebGetAttribute (en définissant les types de demande / réponse à JSON ou XML que vous le souhaitez). Il semble aussi que vous ne l'avez pas attribué votre interface avec ServiceContractAttribute, qui est nécessaire.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top