Rendre un Service WCF Accepter les Données JSON à partir de jQuery.AJAX()
J'ai été chercher pendant des heures en essayant différentes choses pour obtenir ce travail. J'ai essayé tellement de nombreux articles sur stackoverflow et soit je suis trop stupide pour obtenir des choses de travail ou j'ai quelques unique et étrange configuration qui m'empêche de l'expérience de la joie.
J'ai créer le service WCF décrites par ce tutoriel:
http://www.codeproject.com/Articles/97204/Implementing-a-Basic-Hello-World-WCF-Service
C'est super de base et a une méthode et tout ce que je veux c'est de permettre à moi de le consommer avec jQuery.AJAX() en utilisant json.
Je l'ai hébergé dans IIS, et il fonctionne. Je peux accéder à la WSDL sans problèmes.
J'essaie de consommer avec le code suivant:
$.ajax({
dataType: 'json',
type: 'POST',
contentType: "application/json",
url: "//localhost:546/HelloWorldService.svc/GetMessage",
data: {
name: "Joe"
}
}).done(function(msg){
console.log(msg);
$("#result").append(msg);
});
Je reçois toujours des erreurs. Basé sur ce que j'ai essayé-je obtenir 500 erreurs, 402 erreurs, des erreurs sur le contenu incorrect... Toutes les erreurs.
J'ai essayé de mettre en œuvre des solutions à partir des articles suivants. Ils vont de m'avoir changer le web.config points de terminaison (je sais que je dois les changer mais rien j'ai essayé jusqu'à présent fonctionne en ce qui concerne l'ajout d'un JSON point de terminaison) pour ajouter des choses comme
[WebInvoke(Method = "POST", UriTemplate = "json/PostSalesOrderData", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Bare)]
à l'interface.
Ici sont quelques-uns des articles que j'ai regardé et essayé de défoncer dans ma solution pour le faire fonctionner sans beaucoup de succès.
Javascript JSON et WCF webservice sur Android, Phonegap
Services WCF avec JSON, JSONP de SAVON et les Points de Fin
Deux d'extrémité (soap ,json) et une méthode de service
WCF REST Service de ne pas accepter de JSON .Net 4
Moi aussi je suis passé par le biais de ce tuto et essayé d'utiliser ce qu'il avait à dire pour obtenir la solution de travail. Toujours rien!
http://www.primordialcode.com/blog/post/passing-json-serialized-objects-wcf-service-jquery
C'est comment mon interface ressemble
[ServiceContract]
public interface IHelloWorldService
{
[OperationContract]
[WebInvoke(UriTemplate = "GetMessage", Method = "POST",
BodyStyle = WebMessageBodyStyle.WrappedRequest,
RequestFormat = WebMessageFormat.Json,
ResponseFormat = WebMessageFormat.Json)]
String GetMessage(String name);
}
Quelqu'un peut-il m'aider à l'expérience de la joie?
Merci d'avance pour la regarder à ma question. Si vous avez besoin de plus d'informations ou je n'ai pas fourni suffisamment laissez-moi savoir si je peux vous aider à m'aider!
Je doit manquer quelque chose de stupide... je sais que ce n'est pas cela difficile.
EDIT:
De Travail Web.Config
<?xml version="1.0"?>
<configuration>
<system.web>
<compilation debug="false" targetFramework="4.0" />
</system.web>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>
</system.webServer>
<system.serviceModel>
<behaviors>
<endpointBehaviors>
<behavior name="WebHTTPEndpointBehavior">
<webHttp />
</behavior>
</endpointBehaviors>
<serviceBehaviors>
<behavior name="MyServiceTypeBehaviors">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="false" />
</behavior>
</serviceBehaviors>
</behaviors>
<bindings>
<webHttpBinding>
<binding name="MyWebServiceBinding" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647"/>
</webHttpBinding>
</bindings>
<services>
<service name="MyWCFServices.HelloWorldService"
behaviorConfiguration="MyServiceTypeBehaviors">
<endpoint address="" binding="webHttpBinding" bindingConfiguration="MyWebServiceBinding" behaviorConfiguration="WebHTTPEndpointBehavior"
contract="MyWCFServices.IHelloWorldService"/>
<endpoint contract="IMetadataExchange"
binding="mexHttpBinding" address="mex"/>
</service>
</services>
</system.serviceModel>
</configuration>
OriginalL'auteur Steve | 2013-03-20
Vous devez vous connecter pour publier un commentaire.
modifier cette ligne
à
EDIT:
Ce faire à votre service. Ajouter WebHttp de liaison dans le fichier config.
Espère que vous savez où ajouter cet. Si non, laissez-moi savoir et je vais essayer de fournir quelques entrées.
EDIT:
Suite à mon commentaire,
qu'est-ce que la description de l'erreur? et votre url états", url: "//localhost:546/HelloWorldService.svc/HelloWorldService" mais l'appel que vous faites est de GetMessage? Est-il quelque chose de mal ici?
oh mon mauvais! ce faire à votre service.
Édité ma réponse. Désolé, c'était trop pour ajouter un commentaire.
Changement wsBinding à webHttpBinding, Donnez un nom à votre comportement lorsque vous avez défini WebHttp, et à la fin de votre point d'ajouter un paramètre behaviorconfiguration sous ce nom
OriginalL'auteur Sujesh Arukil
Je suis arrivé en retard, mais vous avez encore quelques questions que vous devez résoudre à le faire fonctionner. Vous avez besoin de changer la liaison pour votre point de terminaison pour soutenir les opérations HTTP.
La
maxBufferSize
etmaxReceivedMessageSize
est facultatif.EDIT: Oups, j'ai oublié d'ajouter votre
behaviorConfiguration
.Bon point. - Je l'utiliser sur mes services, je n'avais juste pas envie d'ajouter des éléments supplémentaires afin OP pu voir ce que les exigences minimales ont été. Je vais mettre à jour ma réponse.
Cela a été d'une grande aide. Le service est au moins de travail maintenant. Le service me dit "méthode non autorisée", mais je pense que c'est en dehors de la portée de mon message original.
OriginalL'auteur Thelonias