gpt4 book ai didi

c# - 不同的 RoutePrefix,相同的 Controller 名称

转载 作者:可可西里 更新时间:2023-11-01 03:09:03 28 4
gpt4 key购买 nike

我在使用 namespace 和 RoutePrefix 将我的 web-api 应用程序拆分到不同区域(不是 mvc 区域)时遇到问题

该应用程序使用 Owin Self Host 托管,在我的 Startup 类中我有以下内容。

HttpConfiguration config = new HttpConfiguration();
config.MapHttpAttributeRoutes();
app.UseWebApi(config);

还有我测试过的两个 Controller

[RoutePrefix("api/test")]
public class TestController : ApiController
{
[Route("")]
public IHttpActionResult Get()
{
return Ok("api");
}
}
[RoutePrefix("sync/test")]
public class TestController : ApiController
{
[Route("")]
public IHttpActionResult Get()
{
return Ok("sync");
}
}

这两个 Controller 位于两个不同的命名空间中,Api 和 Sync。

当我尝试访问两个 Controller 时 http://localhost/api/testhttp://localhost/api/sync我收到 404。

但是如果我将其中一个 Controller 重命名为例如TestApiController 然后两者都有效。

有人有好主意是否可以做我想做的事?

最佳答案

不幸的是,Web API 通过类名查找 Controller ,忽略命名空间。这是一个已知问题,并非基于属性的路由所独有。

到目前为止,最简单的解决方法是避免该问题并使用唯一的 Controller 名称。但如果您不介意有点花哨,这里有一个解决方案:

https://blogs.msdn.microsoft.com/webdev/2013/03/07/asp-net-web-api-using-namespaces-to-version-web-apis/

关于c# - 不同的 RoutePrefix,相同的 Controller 名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29627433/

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