ASP.NET Web API格式化程序

igo*_*GIS 2 asp.net formatter asp.net-web-api

正如我们所知,默认情况下,Web API框架具有可以生成JSON或XML的格式化程序如果您想生成其他类型的输出,那么在很多地方我已经读过它需要实现自定义媒体类型格式化程序,它会做你做的事情想.但是我需要从我的Web API控制器返回原始HTML,如果我以这种方式创建HttpResponseMessage:

 response = new HttpResponseMessage()
                        {
                            Content = new StringContent(
                                "<p>Hello world</p>",
                                Encoding.UTF8,
                                "text/html")
                        };
Run Code Online (Sandbox Code Playgroud)

然后我在我的响应中有原始HTML,浏览器将识别并呈现.我的问题实际上为什么它没有使用任何自定义格式化程序,并且在这种情况下我需要创建一个,我不应该.

jos*_*ing 5

Formatters使您的服务能够灵活地响应具有相同数据的客户端,但具体取决于客户端要求的格式.如果客户端要求application/json,您的服务将使用JSON格式化程序来响应JSON.

据我所知,格式化程序仅适用于您的方法直接返回要序列化的对象的情况.在您的情况下,无论客户端要求的媒体类型如何,您都将HttpResponseMessage使用包含html内容的字符串返回a .

通常,如果您希望服务可能以不同格式提供相同数据(取决于Accept客户端指定的标头),则您将需要使用格式化程序.