3

組み込みのコンテンツ ネゴシエーターを利用して、どのフォーマッターを使用するかを決定するためだけにアクセスしたかったのです。Request.Headers.Accept を使用して、それが json または xml コンテンツ タイプであるかどうかを確認したくありません。その決定には多くのことが関係しているためです。コントローラーレベルでチェックしたり、どのフォーマッターが使用されるか、またはリクエストコンテンツタイプが何であるかを教えてくれるクラスをオーバーライドする方法はありますか?

前もって感謝します。

4

3 に答える 3

0

Tugberkにはこれに関するブログがあります。見てください。

于 2012-07-11T10:21:56.070 に答える
0

何が起こっているかを見たい場合は、TraceWriter をインストールすると、conneg が何をするかがわかります。

TraceWriter は次のようになります。

    public class TraceWriter : ITraceWriter {
        public bool IsEnabled(string category, TraceLevel level) {
            return true;
        }

        public void Trace(HttpRequestMessage request, string category, TraceLevel level, Action<TraceRecord> traceAction) {
            var rec = new TraceRecord(request, category, level);
            traceAction(rec);
            Log(rec);
        }

        private void Log(TraceRecord record) {
            Console.WriteLine(record.Message);
        }
    }

このようにインストールされ、

     config.Services.Replace(typeof(ITraceWriter), new TraceWriter());

手動で conneg を呼び出したい場合は、次を使用できます。

     config.Services.GetContentNegotiator().Negotiate(...)
于 2012-07-10T20:41:11.377 に答える