MVC4でUriPathExtensionMappingを使用するにはどうすればよいですか?それは、次によMVC 4のUriPathExtensionMapping
routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}.{extension}"
);
:私は、フォーマッタでのマッピングは、このようなことを追加しました:
MediaTypeMappings.Add(new UriPathExtensionMapping("json", new MediaTypeHeaderValue("application/json"))
しかし、私は動詞を追加しない限り、私は、次のような、私のルート上の拡張機能を使用することはできません私の望むメディアタイプを認識しますが、アクションのパラメータとして「拡張子」も期待します。例:
public object Get(string extension)
{
}
の代わりにちょうど:
public object Get()
{
}
どのように私はこの問題を解決することができますか?
ありがとうございます!
拡張子はWebApiで使用します。データがXMLまたはjsonとして返されるかどうかは、Connegに関係なく指定します。拡張子はコントローラーと一致しないはずです...それはちょうど愚かです。 QueryStringMappingを使用すると、私のルートに影響を与えずに "format = json"のようなことをすることができます。なぜなら、 "。"を私のルートに影響を与えずにURLの末尾に追加できませんか? –
Tyst
また、「api/{controller}。{extension}/{id}」や「/api/{controller}/{id}.{extension}」のようなものを追加する簡略化されたルートは、特にマッチウェルを形成しません{id}がオプションの場合。 UriPathExtensionMappingはルートに影響しません。それは物事を壊すだけです。ルートは自分の{extension}を使用しませんが、ルートマッチングのどこかで指定されていなければ、connegがオーバーライドされるために何も処理されません。 – Tyst