.net core .net核心web api控制器和操作选择
我需要根据以下内容生成适当的404 EROR:.net core .net核心web api控制器和操作选择,.net-core,asp.net-core-webapi,.net Core,Asp.net Core Webapi,我需要根据以下内容生成适当的404 EROR: 如果请求控制器不存在 如果行动不存在 我正在尝试在.NET Core web api上迁移web api,并且需要在.NET framework中的DefaultHttpControllerSelector和ApiControllerActionSelector的.NET Core中找到模拟。因为我有检查控制器和动作存在的模块。如果未找到控制器或操作,则生成自定义错误。 如何处理此问题?对于不存在的控制器或操作,默认情况下将返回404 如果要自定义
如何处理此问题?对于不存在的控制器或操作,默认情况下将返回404 如果要自定义错误消息,可以尝试
中间件
检查响应.StatusCode
,然后根据自己的逻辑自定义响应
public void Configure(IApplicationBuilder app, IHostingEnvironment env, IServiceProvider serviceProvider)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
app.UseDatabaseErrorPage();
}
else
{
app.UseExceptionHandler("/Home/Error");
app.UseHsts();
}
app.Use(async (context, next) => {
//handle request
await next.Invoke();
//handle response
if (context.Response.StatusCode == StatusCodes.Status404NotFound)
{
//hanlde based on your logic
await context.Response.WriteAsync("Something wrong");
}
});
// Rest app.Use
你能定义“适当”吗?试着更具体地说明你想要实现的目标。@KirkLarkin,这篇文章被编辑了,听起来你需要完全自定义路由。你为什么首先需要这个?如果没有匹配的控制器/操作,您将获得404。这是内置的。我知道如果控制器或操作不存在,我将默认得到404。我也采用了同样的方法,但我认为我可以处理404并使抛出新异常(“控制器不存在”)和抛出新异常(“操作不存在”),您可以尝试实现
IRouter
并覆盖RouteAsync
,以使控制器或操作是否存在有效。尝试