Einen WCF-Dienst dazu bringen, JSON-Daten von jQuery.AJAX () zu akzeptieren

Ich habe stundenlang gesucht und verschiedene Dinge ausprobiert, um dies zum Laufen zu bringen. Ich habe so viele Artikel über Stackoverflow ausprobiert und entweder bin ich zu dumm, um Dinge zum Laufen zu bringen, oder ich habe eine einzigartige und merkwürdige Konfiguration, die mich daran hindert, Freude zu empfinden.

Ich erstelle den in diesem Tutorial beschriebenen WCF-Dienst:

http://www.codeproject.com/Articles/97204/Implementing-a-Basic-Hello-World-WCF-Service

Es ist super einfach und hat eine Methode und alles, was ich möchte, ist es mir zu erlauben, es mit jQuery.AJAX () unter Verwendung von json zu konsumieren.

Ich habe es in IIS gehostet und es funktioniert. Ich kann ohne Probleme auf die WSDL zugreifen.

Ich versuche es mit dem folgenden Code zu konsumieren:

$.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);
});

Ich bekomme immer Fehler. Basierend auf dem, was ich versucht habe, erhalte ich 500 Fehler, 402 Fehler, Fehler über falschen Inhalt ... Alle Fehler.

Ich habe versucht, Lösungen aus den folgenden Artikeln zu implementieren. Sie reichen von der Änderung der web.config-Endpunkte (ich weiß, dass ich sie ändern MUSS, aber nichts, was ich bisher versucht habe, funktioniert in Bezug auf das Hinzufügen eines JSON-Endpunkts) bis zum Hinzufügen von Dingen wie

[WebInvoke(Method = "POST", UriTemplate = "json/PostSalesOrderData", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Bare)]

zur Schnittstelle.

Hier sind einige der Artikel, die ich mir angesehen und versucht habe, in meine Lösung einzudringen, damit sie ohne großen Erfolg funktioniert.

Javascript JSON und WCF Webservice auf Phonegap Android

HTTP / 1.1 415 Die Nachricht kann nicht verarbeitet werden, da der Inhaltstyp 'application / json; charset = utf-8 'war nicht der erwartete Typ' text / xml; Zeichensatz = utf-8 '

WCF-Dienste mit JSON-, JSONP- und SOAP-Endpunkten

Zwei Endpunkte (Soap, Json) und eine Dienstmethode

WCF-REST-Dienst akzeptiert JSON in .Net 4 nicht

Ich habe auch dieses Tutorial durchgesehen und versucht, das zu verwenden, was er zu sagen hatte, um meine Lösung zum Laufen zu bringen. Immer noch nichts!

http://www.primordialcode.com/blog/post/passing-json-serialized-objects-wcf-service-jquery

So sieht meine Oberfläche aus

[ServiceContract]
public interface IHelloWorldService
{
    [OperationContract]
    [WebInvoke(UriTemplate = "GetMessage", Method = "POST",
        BodyStyle = WebMessageBodyStyle.WrappedRequest,
        RequestFormat = WebMessageFormat.Json,
        ResponseFormat = WebMessageFormat.Json)]
    String GetMessage(String name);
}

Kann mir jemand helfen, Freude zu erleben?

Vielen Dank im Voraus, dass Sie sich meine Frage angesehen haben. Wenn Sie weitere Informationen benötigen oder ich nicht genug zur Verfügung gestellt habe, lassen Sie es mich wissen, damit ich Ihnen helfen kann, mir zu helfen!

Ich muss etwas Dummes vermissen ... Ich weiß, es ist nicht so schwer.

BEARBEITEN:

Arbeitet mit 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>

Antworten auf die Frage(2)

Ihre Antwort auf die Frage