Anwenden von [WebInvoke (ResponseFormat = WebMessageFormat.Json)] in der Konfigurationsdatei

Ich schreibe, was ich als POJ (Plain Old JSON) WCF-Webdienst bezeichne - einen, der Standard-JSON verwendet und ausgibt, ohne den Mist, den ASP.NET Ajax gerne hinzufügt.

s scheint, dass es drei Schritte gibt, um dies zu erreichen:

Ändern Sie "enableWebScript" in "webHttp" im Tag @ des EndpunktDekorieren Sie die Methode mit [WebInvoke (ResponseFormat = WebMessageFormat.Json)]Eine Beschwörung von [AspNetCompatibilityRequirements (RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)] zum Servicevertrag hinzufügen

Dies funktioniert alles in Ordnung für mich - ich kann vorbeikommen und werde nett und einfach zurückgeschickt.

Wenn ich das WebInvoke-Attribut entferne, wird stattdessen XML zurückgegeben, sodass es mit Sicherheit das tut, was es tun soll. Ich finde es jedoch merkwürdig, dass die Option zum Angeben der JSON-Ausgabe hier und nicht in der Konfigurationsdatei angezeigt wird. Angenommen, ich wollte meine Methode auch als XML-Endpunkt verfügbar machen - wie würde ich das tun? Derzeit ist die einzige Möglichkeit, die ich sehen kann, eine zweite Methode, die genau dasselbe tut, für die jedoch WebMethodFormat.Json nicht angegeben ist. Dann spülen und für jede Methode in meinem Dienst wiederholen? Yuck.

Das Festlegen, dass die Ausgabe in JSON im Attribut serialisiert werden soll, scheint der Philosophie von WCF zu widersprechen, bei der der Dienst auf transport- und codierungsunabhängige Weise implementiert wird die Konfigurationsdatei.

Gibt es eine bessere Möglichkeit, das zu tun, was ich tun möchte? Oder stecken wir mit diesem unangenehmen Attribut fest? Oder verstehe ich WCF nicht tief genug?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage