2012-12-28 15 views
5

Ich habe einen REST-Dienst, der mehrere Clients enthält, die so eingerichtet sind, dass, soweit ich das beurteilen kann, JSON nur akzeptiert wird, wenn ein POST/PUT ausgeführt wird (und nur JSON für alle Aufrufe zurückgibt). Das Problem besteht darin, dass auf der Service-/Hilfeseite Beispiele für JSON und XML angezeigt werden. Gibt es eine Möglichkeit, den gesamten zusätzlichen XML-Müll zu entfernen, um Benutzer nicht zu verwirren (da der Dienst wiederum nur JSON akzeptiert) und nur JSON-Beispiele auf der/help-Seite anzuzeigen? Hier meine Web.config ist:XML-Beispiele im WCF-REST-Service deaktivieren?

<standardEndpoints> 
    <webHttpEndpoint> 
    <standardEndpoint name="" helpEnabled="true" automaticFormatSelectionEnabled="false" defaultOutgoingResponseFormat="Json" /> 
    </webHttpEndpoint> 
</standardEndpoints> 

Und jeder meines GetGets/WebInvokes definiert w/JSON wie die Formate, zum Beispiel:

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

So ist es noch etwas, was ich tun kann, lassen der Service weiß, dass es JSON ist nur und entfernen Sie die Auto-Gen XML-Junk-Up-Cluttering meine/Hilfe-Seiten?

+0

Ich bin mir nicht sicher, ob Sie die XML-Beispiele auf den Hilfeseiten deaktivieren können. Werfen Sie einen Blick auf [Autodocs] (http://autodocs.codeplex.com/). Sie könnten es wahrscheinlich ändern, um keine XML-Beispiele mehr anzuzeigen. – Obaid

+0

Sie könnten Ihre eigene Hilfedatei schreiben und diese anzeigen, anstatt die standardmäßig generierte Datei vom Framework zu verwenden. – Rajesh

+0

Sehen Sie sich meine Antwort unten an ... Hier gibt es viele Fehlinformationen. Sie ** können ** die automatisch generierte Hilfeseite ** verwenden und ** keine XML anzeigen. –

Antwort

0

Sie können die Hilfeseite deaktivieren, indem Sie diesen auf Ihrer web.config:

<webServices> 
<protocols> 
    <remove name="Documentation" /> 
</protocols> 
</webServices> 

source

+0

Ich versuche nicht, alle Hilfe zu deaktivieren. Ich versuche, die XML-Beispiele für fehlerhafte XML-Dateien von der Seite/help zu entfernen, da der Dienst nicht für die Annahme von XML konfiguriert ist. Es scheint auch, dass die Konfiguration, die ich oben gepostet habe Vorrang vor der Konfiguration, die Sie hier haben, wie ich es versuchte und/help wurde noch aktiviert. Aber egal, ich möchte, dass es aktiviert wird. –

0

Ich war sehr unzufrieden mit, wie MS diese Funktion implementiert. Sie bieten keine Kontrolle über die Ausgabe und alle Implementierungsdetails sind privat. Interfaces, Klassen, etc ...

Ich habe meinen eigenen Sample Generator aus anderen Gründen gebaut, aber nachdem ich den ganzen Code gelesen habe, kann ich Ihnen sagen, dass Sie das Verhalten nicht kontrollieren können.

Optional, und wenn Ihnen danach ist, können Sie ein IOperationBehavior hinzufügen und die XML-Beispielausgabe entfernen. Das Markup ist gut formatiert und Sie sollten in der Lage sein, die Abschnitte, die aus der Endmarkierung entfernt werden sollen, leicht zu analysieren und zu finden.

Wenn Sie das Gefühl haben möchten, dass Sie dies weiter verfolgen möchten, lassen Sie es mich wissen und ich kann Ihnen weitere Details geben.

3

Nehmen Sie Ihre Microsoft.ApplicationServer.Http.HttpConfiguration config und entfernen Sie die XmlFormatter (es hat standardmäßig einen JSON-Formatierer und einen XML-Formatierer).

var config = new Microsoft.ApplicationServer.Http.HttpConfiguration(); 
config.Formatters.Remove(config.Formatters.XmlFormatter); 

Jetzt können Sie einen HttpServiceHostFactory mit dieser Konfiguration erstellen und die Routen registrieren verwenden.

//RouteTable is of type System.Web.Routing.RouteCollection 
RouteTable.Add(new WebApiRoute(
    "MyService", 
    new HttpServiceHostFactory { Configuration = config }, 
    typeof(MyService))); 

Ich habe keine glaubwürdige Quelle für Sie außer "es funktioniert für mich."

Verwandte Themen