未找到新的API控制器[关闭]

问题描述 投票:0回答:1

我们有一个新的.NET 4.7.1 API,其中一个控制器已经运行。但是,当添加第二个控制器时,我们在尝试访问新控制器上的方法时会收到404

使用http://localhost/OurAPI/api/v1/UserInfo/GetUserInfo访问的工作,现有控制器:

    [RoutePrefix("api/v1/UserInfo")]
    public class UserInformationController : ApiController
    {

        [HttpGet]
        [Route("GetUserInfo", Name = "GetUserInfo")]
        public IHttpActionResult GetUserInfo()
        {
             return Ok("Old Controller");
        }
    }

使用http://localhost/OurAPI/api/v1/Test/TestStuff访问破碎的新控制器:

    [RoutePrefix("api/v1/Test")]
    public class TestController : ApiController
    {

        [HttpGet]
        public IHttpActionResult TestStuff()
        {
                return Ok("Test");
        }
    }

我的路线配置:

        public static void RegisterRoutes(RouteCollection routes)
        {
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

            routes.MapRoute(
                name: "Default",
                url: "{controller}/{action}/{id}",
                defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
            );
        }

我很难过为什么会发生这种情况,我在不同的API中创建了许多控制器,并没有遇到过像这样的问题。

更新:

我阅读了所有的回复,感谢大家帮我解决这个问题!

在我试图缩小/隐藏我最初问题上显示的代码时,我不小心做了一些不好的复制和粘贴,这可能会误导每个人阅读它。

我的实际新控制器代码:

using System.Web.Mvc;

    [RoutePrefix("api/v1/Test")]
    public class TestController : Controller
    {
        [HttpGet]
        public IHttpActionResult TestStuff()
        {
                return Ok("Test");
        }
    }

我的问题是这个项目是一个Web API,而不是一个MVC项目。我应该使用System.Web.Http时,我正在使用System.Web.Mvc属性和类型。

我工作的新控制器代码:

using System.Web.Http;
    [RoutePrefix("api/v1/Test")]
    public class TestController : ApiController
    {
        [HttpGet]
        [Route("SetPassword")]
        public IHttpActionResult Test()
        {
            return Ok("test");
        }
    }
c# asp.net .net asp.net-web-api
1个回答
2
投票

看起来你只是忘了为路线添加一个属性。这应该可以解决您的问题。注意:“名称”部分是可选的,但由于您在另一个端点上有它,我也选择将它放在这里。

[Route("TestStuff", Name = "TestStuff")]

但是,我想指出您的路由配置设置了传统路由,但之后您正在使用属性路由。我一般建议选择其中一个。

.NET Framework WebApi2文档对此:https://docs.microsoft.com/en-us/aspnet/web-api/overview/web-api-routing-and-actions/ .NET Core MVC文档相同主题:https://docs.microsoft.com/en-us/aspnet/core/mvc/controllers/routing?view=aspnetcore-2.2

© www.soinside.com 2019 - 2024. All rights reserved.