2012-12-28 11 views
5

POST/PUTを実行しているときにJSONを受け入れるだけで、すべての呼び出しでJSONのみを返すように設定されているクライアントを消費するRESTサービスがあります。問題は、サービス/ヘルプページに、JSONとXMLの両方の例が示されていることです。ユーザーに混乱を与えないように余分なXMLガベージをすべて削除する方法はありますか(サービスはJSONだけを受け入れるため)、/ helpページにJSONの例を表示するだけですか?ここに私のWeb.configです:WCF RESTサービスのXMLサンプルを無効にしますか?

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

そして、私のGetGetsの各/ WebInvokesは、例えば、フォーマットとしてJSON/wが定義されています。だから、

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

、私ができるように行うことができます何かがありますサービスは、それがJSON のみであることを知り、自動/ XMLのジャンクを削除すると、/ helpのページが乱雑になります。

+0

ヘルプページからXMLの例を無効にできるかどうかはわかりません。 [Autodesk](http://autodesk.codeplex.com/)を見てください。おそらくXMLの例を表示しないように変更することができます。 – Obaid

+0

フレームワークでデフォルトの生成ファイルを使用するのではなく、独自のヘルプファイルを作成して表示することができます。 – Rajesh

+0

下記の私の答えを見てください...ここに多くの誤報があります。あなたは**自動生成されたヘルプページ**を使用することができます**そしてそれはXMLを表示しません。 –

答えて

0

あなたのweb.configファイルにこれを追加することにより、ヘルプページを無効にすることができます

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

source

+0

すべてのヘルプを無効にしようとしていません。サービスがXMLを受け入れるように設定されていないため、/ helpページからガベージXMLの例を削除しようとしています。また、私が試したように、ここに設定した設定が上記の設定よりも優先され、/ helpが有効になっているようです。しかし、関係なく、私はそれを有効にしたい。 –

0

私はMSがこの機能を実装する方法と非常に不幸でした。彼らは出力を制御することはできませんし、すべての実装の詳細はプライベートです。インターフェイス、クラスなど...

私は他の理由で独自のサンプルジェネレータを構築しましたが、これに関連するすべてのコードを読み終えた後、動作を制御できないことを確認できます。

オプションで、これについて強く感じる場合は、IOperationBehaviorを追加してxmlサンプル出力を取り除くことができます。マークアップは形式が整っており、最終マークから削除するセクションを簡単に解析して見つけることができるはずです。

あなたがこれを追求したいと思えば、さらに私に知らせてください。私はあなたに詳細を教えてください。

3

Microsoft.ApplicationServer.Http.HttpConfiguration configとし、XmlFormatter(デフォルトではJSONフォーマッタとXMLフォーマッタがあります)を削除してください。

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

今、あなたは、この構成でHttpServiceHostFactoryを作成し、ルートを登録するためにそれを使用することができます。

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

"私のために働く"以外の信頼できる情報源はありません。

関連する問題