5

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

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

そして、私のGetGets / WebInvokesのそれぞれは、フォーマットとしてJSONを使用して定義されています。次に例を示します。

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

それで、サービスにJSONのみであることを知らせ、/ helpページを乱雑にする自動生成XMLジャンクを削除するために、他にできることはありますか?

4

3 に答える 3

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)));

「私には効く」以外に信頼できる情報源はありません。

于 2013-03-26T23:01:37.067 に答える
0

これをweb.configに追加すると、ヘルプページを無効にできます。

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

ソース

于 2012-12-28T20:02:12.340 に答える
0

MS がこの機能をどのように実装したかについて、私は非常に不満でした。それらは出力を制御するものではなく、実装の詳細はすべて非公開です。インターフェイス、クラスなど...

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

必要に応じて、これについて強く思う場合は、IOperationBehavior を追加して、xml のサンプル出力を取り除くことができます。マークアップは適切にフォーマットされており、最終的なマークアップから削除するセクションを簡単に解析して見つけることができるはずです。

これをさらに進めたいと思われる場合は、お知らせください。詳細をお知らせします。

于 2013-03-26T22:57:00.393 に答える