gpt4 book ai didi

c# - Web API 路由以捕获丢失的 Controller

转载 作者:行者123 更新时间:2023-11-30 21:54:53 25 4
gpt4 key购买 nike

我的应用程序中有一堆 Controller ,它们由默认的 web api 路由处理。现在我正在尝试处理 Controller 尚不存在的情况,但我对它的名字真的很感兴趣。

所有现有和 future 的 Controller 都将具有相同的路由结构

api/{controller}/{id}

有没有办法在不阻止由 Controller 类型名称执行的默认 api 路由的情况下捕获不存在的 Controller 名称。

我当前的配置:

public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
config.Routes.MapHttpRoute(
name: "Default Api",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);

config.Routes.MapHttpRoute(
name: "Missing Api",
routeTemplate: "api/{name}/{id}",
defaults: new
{
controller = "Missing",
name = RouteParameter.Optional,
id = RouteParameter.Optional
}
);
}
}

当安排它时,这个顺序 MissingController 永远不会在运行时创建。如果我重新排序路线,将不会创建实际控制人。

对于我来说,让缺少的和现有的 Controller 保持相同的 url 很重要,否则此更改将需要进行一些更改,并且(尤其是)与前端开发人员进行不必要的通信。

怎么办?

最佳答案

您可以尝试另一个答案中提到的异常处理程序,或者您可以捕获 api 特定的 404 Resource not found 错误并将它们重定向到您丢失的 Controller 。

为此,请在 web.config

中添加以下自定义错误模块
<location path="api">
<system.webServer>
<httpErrors errorMode="Custom" existingResponse="Replace">
<remove statusCode="404" />
<error statusCode="404" responseMode="ExecuteURL" path="/api/Missing" />
</httpErrors>
</system.webServer>
</location>

注意:您可能需要执行 IISRESET。

关于c# - Web API 路由以捕获丢失的 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32758212/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com