2016-08-02 3 views

答えて

4

Consumes -Annotationは、コントローラまたはアクションレベルで承認されたコンテンツタイプと一緒に使用できます。クライアントはapplication/xmlのContent-Typeヘッダを提供する場合、このコントローラに

[Consumes("application/xml")] 
public class MyController : Controller 
{ 
    public IActionResult MyAction([FromBody] CallModel model) 
    { 
     .... 
    } 
} 

呼び出しで

にのみ成功します。それ以外の場合は、415(サポートされていないメディアタイプ)が返されます。

1
  1. あなたは、単に(if request.AcceptTypes.Contains("application/xml")のような)要求AcceptTypes /のContent-Typeヘッダをチェックし、要求処理を停止することがあります。

  2. あなたが提供したリンクによれば、コンテンツの種類を無視して常にXML結果を返すように思えます。この場合、新しいProduces属性を使用することができます。

戻ります予想のSystem.Typeアクションとサポートレスポンスコンテンツタイプを指定するフィルタ。 Microsoft.AspNetCore.Mvc.ProducesAttribute.ContentTypes値は、Microsoft.AspNetCore.Mvc.ObjectResult.ContentTypesを設定するために使用されます。あなたがいずれかを使用してMvcOptionsを追加する必要がありますので、XML formatterはデフォルトで有効になっていないこと、

[Produces("application/xml")] 
public Object ControllerAction() 
{ 
    return new { text = "hello world" }; 
} 

注:

あなたのコントローラ

[Produces("application/xml")] 
public YourXmlController : Controller { } 

のみ、特定のコントローラのアクションにに属性を適用します。

services.Configure<MvcOptions>(options => 
{ 
    //options.InputFormatters.Add(...); 
    //options.OutputFormatters.Add(...); 
}); 
+1

これを行う拡張方法があります。 'services.AddMvc()。AddXmlSerializerFormatters()' https://github.com/aspnet/Mvc/blob/1.0.0/src/Microsoft.AspNetCore.Mvc.Formatters.Xml/DependencyInjection/MvcXmlMvcCoreBuilderExtensions.cs#L38 – Tseng

関連する問題