我需要在错误的API调用时返回404状态码,这样我就可以在客户端(Angular 5)上创建适当的响应。目前后端返回状态码200和index.html,结果导致前端出现JSON解析错误。
我使用ASP.NET Core 2.1和Angular模板项目创建了一个新的Web项目。这里是该模板发布版本的链接。我没有改变模板代码,只是将其作为原样发布到Azure。(在开发模式下,我得到了预期的404错误)。
如此处所述,默认行为应该是404。
这里是Startup.cs
文件,这里是SampleDataController.cs
文件。
我考虑在Startup.cs
中使用类似以下代码:
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller}/{action}/{id?}");
});
app.MapWhen(x => x.Request.Path.Value.Contains("/api"), builder =>
{
builder.UseMvc(routes =>
{
routes.MapSpaFallbackRoute(
name: "spa-fallback",
defaults: new { controller = "Home", action = "Error" });
});
});
然后在HomeController.cs
中:
public IActionResult Error()
{
return NotFound();
}
但那似乎是错误的,尽管它起作用了。