Asp.net web api ASP.NET WebAPI支持的每个方法的媒体类型

Asp.net web api ASP.NET WebAPI支持的每个方法的媒体类型,asp.net-web-api,asp.net-web-api-routing,media-type,Asp.net Web Api,Asp.net Web Api Routing,Media Type,给定控制器中的方法: public class CustomerController : ApiController { [HttpGet] public CustomerDto GetById([FromUri] int id) { . . return customerDto } } 是否有方法使用属性指定受支持的媒体类型?例如,CustomerDto是一个复杂的类,只能用JSON(application/JS

给定控制器中的方法:

public class CustomerController : ApiController
{
    [HttpGet]
    public CustomerDto GetById([FromUri] int id)
    {
        .
        .
        return customerDto
    }
}
是否有方法使用属性指定受支持的媒体类型?例如,CustomerDto是一个复杂的类,只能用JSON(application/JSON)而不是XML(application/XML)进行序列化,但也可以接受PDF(application/PDF)。有没有这样的东西:

[HttpGet(Accepts.JSON, Accepts.PDF)]  
    or
[HttpGet][AcceptJSON][AcceptXML]
    or
[HttpGet][Accept("application/json")][Accept("application/pdf")]
如果传入请求不受支持,则可能返回不受支持的异常/状态

注意——我不想像在全局范围内那样将XML序列化全部删除。相反,我想定义每条路线可以接受的内容


使用-ASP.NET WebAPI RC 1(需要升级)+自托管听起来像是一个定制的ActionFilterAttribute可以做到这一点

创建从System.Web.Http.Filters.ActionFilterAttribute继承的新类,重写OnActionExecuting方法。在这个方法中,您可以检查请求的标题,查找您不想支持的内容并返回适当的响应

自定义ActionFilterAttribute的构造函数可以获取要处理的“接受”类型和要拒绝的类型的详细信息


有关自定义ActionFilterAttribute的示例,请签出。

链接已失效,您可以在此链接中查看示例