c# - 为什么 Ok() 方法返回 text/plain 媒体类型而不是 application/json?

标签 c# asp.net asp.net-core-webapi

文档 ( https://learn.microsoft.com/en-us/aspnet/core/web-api/advanced/formatting?view=aspnetcore-3.1 ) 指出,使用 Ok() 方法返回的结果默认格式化为 json。我认为这也意味着它返回为 application/json 但使用 fiddler 我发现这对我来说并非如此。

问题是,我返回一个已经格式化为 json 的字符串。这是问题所在吗?如何让它以 application/json 媒体类型返回?

编辑:

我刚刚读到 Ok() 在提供字符串时确实返回 text/plain 而不是 application/json,这使得它无法用于返回原始 json。答案似乎是返回 Content(rawJson, "application/json")

这确实解决了我的问题,但现在我想知道是否有一种方法可以将媒体类型全局设置为始终为 json?如果没有,我想我可以创建一个基本 Controller 类,并提供处理它的方法。

最佳答案

您可以添加全局过滤器。在 Startup.cs ConfigureServices 方法中,找到 services.AddControllers(); 并添加如下内容:

services.AddControllers(config => config.Filters.Add(new ProducesAttribute("application/json")));

现在,这减少了在 Controller 级别添加它的需要。

关于c# - 为什么 Ok() 方法返回 text/plain 媒体类型而不是 application/json?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62309030/

相关文章:

c# - 登录页面不能在未登录的情况下引用其他文件

c# - 使用 asp.net c# 将事件类添加到当前超链接

c# - GridView 单元格未在 RowCommand 事件上注册任何控件

C# HttpClient 返回状态 WaitingForActivation

c# - WebApi 2 路由使用 ?或者/

c# - 如何使用 C# 或 XAML 创建自动动画轮播循环图像?

c# - 从 webBrowser 控件读取 XML

c# - 如何从网站获取DOM数据

c# - 如何使用 ImageFormatConverter.ConvertFromString 将包含 HTML 响应的字符串转换为图像?

c# - 使用 Asp.Net Core 2 注入(inject)存储库时的空对象