我是 asp.net core 3 的新手,很抱歉,如果我的问题听起来太基本了,下面是我的控制器类:
[ApiController]
[Route("[controller]")]
public class MyController : ControllerBase {
List<string> _fruit = new List<string> { "Pear", "Lemon", "Peach" };
[HttpGet("fruit")]
public IEnumerable<string> MethodXXX() {
return _fruit;
}
...
}
Run Code Online (Sandbox Code Playgroud)
所以当我路由到 时my/fruit,我得到一个字符串列表。
但如果我将 MethodXXX 更改为:
[HttpGet("fruit")]
public IEnumerable<string> MethodXXX() {
return null;
}
Run Code Online (Sandbox Code Playgroud)
然后浏览器总是回退到以前的网址,例如我一my/other开始就在,然后我将网址更改为my/fruit,我可以看到浏览器发送了一个新请求,并且网址my/fruit在短时间内更改为 ,然后它再次落回my/other。
这种行为是为了什么?我很确定我读过一本书,上面说你可以从操作方法返回 null?
这是 .Net Core 3 中新引入的行为,如果 Action 方法返回 null,则它仅发送表示无内容的 204 响应。如果您希望从操作方法返回 null,则可以通过在 Startup.cs 文件中使用以下代码块来覆盖此行为,该代码块会删除相应的输出格式化程序,并且您将从 API 响应中返回 null。
services.AddControllers(options =>
{
options.OutputFormatters.RemoveType<HttpNoContentOutputFormatter>();
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4620 次 |
| 最近记录: |