.NET Core WebAPI - 带有属性路由的 404 回退

     2023-03-31     249

关键词:

【中文标题】.NET Core WebAPI - 带有属性路由的 404 回退【英文标题】:.NET Core WebAPI - 404 fallback with attribute routing 【发布时间】:2021-01-26 10:21:34 【问题描述】:

.NET Core 3.1 中实现我的第一个 restful webapi 时,我正在尝试实现 404 错误的后备例程。我的 Startup.cs 实际看起来像这样:

public void ConfigureServices(IServiceCollection services)

    services.AddControllers();
    // ...


public void Configure(IApplicationBuilder app, IWebHostEnvironment env)

    // ...
    app.UseRouting();

    app.UseEndpoints(endpoints =>
    
        endpoints.MapControllers();
        endpoints.MapFallbackToController("EndpointNotFound", "Fallback");
    );

在此配置中,404 回退在实际路由到相应控制器之前生效。我在 api 控制器中使用属性路由。一般是否可以在属性路由中使用MapFallbackToController() 方法?如果没有,是否有有用的中间件替代品?

问候

【问题讨论】:

【参考方案1】:

一些选项可以实现这一点,您可以从这里开始并探索其他可能性(以下在 Startup.cs 的 Configure 方法中配置):

选项 1 app.UseStatusCodePages(); 这将显示内置的默认页面。

选项 2 app.UseStatusCodePagesWithRedirects("~/MyCustomController/0"); 占位符 0 将填充 HttpStatusCode 例如:404

此方法常用于app:

应该将客户端重定向到不同的端点,通常是在 > 不同的应用程序处理错误的情况下。对于 Web 应用程序,客户端的浏览器 地址栏反映了重定向的端点。 不应保留原始状态代码并将其与初始重定向响应一起返回。

选项 3 app.UseStatusCodePagesWithReExecute("~/MyCustomController/0"); 与选项 2 相同,但有所不同

此方法常用于应用应:

处理请求而不重定向到不同的端点。网页版 应用程序,客户端的浏览器地址栏反映了最初请求的>端点。 保留原始状态代码并将其与响应一起返回。

您可以将其用作处理错误Handle errors in ASP.NET Core的更广泛详细信息的参考

【讨论】:

带有 ASP.NET Core WebAPI 的 Dart 中的令牌刷新并发问题

】带有ASP.NETCoreWebAPI的Dart中的令牌刷新并发问题【英文标题】:TokenrefreshconcurrencyissueinDartwithASP.NETCoreWebAPI【发布时间】:2019-03-1218:09:00【问题描述】:我使用Dart在Flutter中编写了一个简单的应用程序。我使用JWT令牌对用户进行身... 查看详情

如何使用数据注释为模型属性 WebApi .NET Core 添加布尔验证

】如何使用数据注释为模型属性WebApi.NETCore添加布尔验证【英文标题】:HowtoaddBooleanvalidationforamodelpropertyWebApi.NETCoreusingdataannotation【发布时间】:2020-01-2007:51:36【问题描述】:我正在尝试使用注释验证下面的属性,它应该是真还... 查看详情

Asp.Net Core WebApi:授权属性错误 403

】Asp.NetCoreWebApi:授权属性错误403【英文标题】:Asp.NetCoreWebApi:AuthorizeattributeError403【发布时间】:2018-10-3019:37:52【问题描述】:我在Asp.NetCoreWebApi项目中工作并创建了一个角色"admin"并将其添加到我的用户。但是如果我以管理员... 查看详情

带有 SPA 的 .NET Core WebApi 项目中的混合身份验证流程

】带有SPA的.NETCoreWebApi项目中的混合身份验证流程【英文标题】:Hybridauthflowin.NETCoreWebApiprojectwithSPA【发布时间】:2018-08-1109:00:43【问题描述】:我正在开发一个项目,这是我第一次遇到具有API架构的SPA(以及我的第一个.NETCore项... 查看详情

.NET core 2.1 Web API 是不是支持基于约定的路由?

】.NETcore2.1WebAPI是不是支持基于约定的路由?【英文标题】:Does.NETcore2.1webAPIsupportconventionbasedrouting?.NETcore2.1WebAPI是否支持基于约定的路由?【发布时间】:2020-01-0322:44:33【问题描述】:我是WebAPI和.net核心的新手,我的任务是开... 查看详情

带有 JWT Bearer 令牌和 ASP.NET Core 2 WebApi 的 Azure AD 用户信息

】带有JWTBearer令牌和ASP.NETCore2WebApi的AzureAD用户信息【英文标题】:AzureADUserinfowithJWTBearertokenandASP.NETCore2WebApi【发布时间】:2018-03-1512:32:49【问题描述】:我找到了一个tutorial,我可以在其中使用AzureAD凭据登录我的应用程序。在... 查看详情

ASP.NET Core WebAPI FromBody 属性未验证对象非引用字段

】ASP.NETCoreWebAPIFromBody属性未验证对象非引用字段【英文标题】:ASP.NETCoreWebAPIFromBodyattributeisnotvalidatingobjectnon-referencefields【发布时间】:2020-11-0715:39:40【问题描述】:我在我的控制器中创建了动作:[HttpPost]publicasyncTask<IActionRes... 查看详情

ASP.NET Core JWT 身份验证以保护 webAPI [Authorize] 属性错误 401 Unauthorized

】ASP.NETCoreJWT身份验证以保护webAPI[Authorize]属性错误401Unauthorized【英文标题】:ASP.NETCoreJWTAuthenticationtosecurewebAPI[Authorize]attributeError401Unauthorized【发布时间】:2021-05-2013:21:31【问题描述】:我开发APIPOST并且它工作正常,但是当我添... 查看详情

.Net Framework 4.6.1 WebApi,属性路由和默认路由不起作用

】.NetFramework4.6.1WebApi,属性路由和默认路由不起作用【英文标题】:.NetFramework4.6.1WebApi,Attributeroutinganddefaultroutingnotworking【发布时间】:2021-06-1022:39:24【问题描述】:感谢您对此提供的任何帮助。我目前正在从事一个项目,我们... 查看详情

ASP.NET CORE,Web API:没有路由与提供的值匹配

】ASP.NETCORE,WebAPI:没有路由与提供的值匹配【英文标题】:ASP.NETCORE,WebAPI:Noroutematchesthesuppliedvalues【发布时间】:2017-01-2010:11:23【问题描述】:请注意:这个问题是在2016年提出的。这个问题的原始答案是更新microsoftapiversiong包... 查看详情

ASP.NET Core 属性路由 - 区域设置前缀

】ASP.NETCore属性路由-区域设置前缀【英文标题】:ASP.NETCoreAttributeRouting-LocalePrefix【发布时间】:2020-10-0719:39:19【问题描述】:我有以下控制器:[Route("blog")][Route("locale:regex(^(de|es|fr)$)/blog",Order=-1)]publicclassBlogController:Controller[HttpGet 查看详情

带有 id 的 asp.net core 2 razor pages 路由

】带有id的asp.netcore2razorpages路由【英文标题】:asp.netcore2razorpagesroutewithid【发布时间】:2018-02-1702:19:21【问题描述】:有两个页面,一个是Editpage,另一个是MainDetailpage,它是一些实体的组合数据在编辑页面中:编辑完成后,我... 查看详情

.Net Core如何调试路由404问题

...时间】:2020-03-1800:56:07【问题描述】:我有一个.net核心webapi应用程序,我最近尝试在一台新计算机上调试(在VS2017中)(在长时间中断该应用程序之后)。我还将.net核心从1.1升级到了2.2。但是,它似乎不再路由,甚至路由到我... 查看详情

属性路由在 asp.net core 3.0 中无法正常工作

】属性路由在asp.netcore3.0中无法正常工作【英文标题】:Attributeroutingisnotworkingproperlyinasp.netcore3.0【发布时间】:2020-05-0222:23:37【问题描述】:我试图将我的应用程序从asp.netcore2.1迁移到使用属性路由的3.0我的启动文件的ConfigureServ... 查看详情

在 ASP.NET Core WebAPI 中实现 JSON 合并补丁

】在ASP.NETCoreWebAPI中实现JSON合并补丁【英文标题】:ImplementingJSONMergePatchinASP.NETCoreWebAPI【发布时间】:2018-02-2221:42:09【问题描述】:我有兴趣在我的ASP.NETCoreWebAPI中添加对部分更新的支持,我只更新调用者提供的资源的属性,而... 查看详情

Blazor 无法连接到 ASP.NET Core WebApi (CORS)

】Blazor无法连接到ASP.NETCoreWebApi(CORS)【英文标题】:BlazorcannotconnecttoASP.NETCoreWebApi(CORS)【发布时间】:2020-11-0121:57:15【问题描述】:我有一个在本地IPhttps://192.168.188.31:44302上运行的ASP.NETCore服务器,带有WebAPI端点。我可以使用VSCode... 查看详情

使用 JWT 令牌的 ASP.NET Core 网站到 WebApi 身份验证

】使用JWT令牌的ASP.NETCore网站到WebApi身份验证【英文标题】:ASP.NETCoreWebsitetoWebApiauthenticationusingJWTtoken【发布时间】:2019-07-1718:34:13【问题描述】:我正在开发一个ASP.NETCore2.2网站,用户需要登录然后使用它。我网站中的AccountContr... 查看详情

NET Core 3.1 MVC 授权/身份验证,带有在单独的 Net Core 3.1 Web Api 中从外部获取的令牌 (JWT)

】NETCore3.1MVC授权/身份验证,带有在单独的NetCore3.1WebApi中从外部获取的令牌(JWT)【英文标题】:NETCore3.1MVCAuthorization/Authenticationwithtoken(JWT)obtainedexternallyinseparateNetCore3.1WebApi【发布时间】:2020-11-0719:37:04【问题描述】:我有3个项目... 查看详情