28

私は Web API の使用の初心者であり、解決策が見つからない問題に苦しんでいます。一般的な問題は、application/x-www-form-urlencoded メディア タイプ サンプルの代わりに、人々が取得する場合です。

メディア タイプ 'application/x-www-form-urlencoded' のサンプルを生成できませんでした。フォーマッタ 'FormUrlEncodedMediaTypeFormatterTracer' を使用してタイプ 'Task' を書き込むことはできません。

一般的な提案は、構成ファイルで独自のサンプルを指定することですが、このメディア タイプのヘルプ セクションを削除できますか?

config.SetSampleForType("", new MediaTypeHeaderValue("application/x-www-form-urlencoded"), typeof(object));

空のセクションが表示されます。

前もって感謝します!

4

2 に答える 2

54
  • このセクションを削除したい理由をお伺いしてもよろしいですか? あなたのサービスでformurlencodedフォーマッタをサポートしたくないですか?はいの場合は、フォーマッタのコレクションからフォーマッタ自体を削除できます。その場合、このセクションは表示されません。

    config.Formatters.Clear();
    config.Formatters.Add(new JsonMediaTypeFormatter());
    config.Formatters.Add(new XmlMediaTypeFormatter());  
    
  • または、次の変更 (強調表示されたコメント) をファイルでAreas\HelpPage\SampleGeneration\HelpPageSampleGenerator.cs実行し、次のことを実行して、フォーマッターを除外することもできます。

        // Do the sample generation based on formatters only if an action doesn't return an HttpResponseMessage.
        // Here we cannot rely on formatters because we don't know what's in the HttpResponseMessage, it might not even use formatters.
        if (type != null && !typeof(HttpResponseMessage).IsAssignableFrom(type))
        {
            object sampleObject = GetSampleObject(type);
    
            // Change Begin --------------------------------------
            IEnumerable<MediaTypeFormatter> filteredFormatters = formatters.Where(frmtr => frmtr.GetType() != typeof(JQueryMvcFormUrlEncodedFormatter));
    
            foreach (var formatter in filteredFormatters)
            {
    
            // Change End --------------------------------------
    
于 2013-08-15T17:58:00.033 に答える