【发布时间】:2022-01-10 21:45:42
【问题描述】:
我遇到的这个问题似乎很常见,但我读到的解决方案都没有在我的情况下起作用。我正在尝试在现有 MVC 项目中添加 ApiController。
当我尝试访问 http://localhost:51362/api/test 上添加的控制器时,我收到此错误:{"Message":"No HTTP resource was found that matches the request URI 'http://localhost:51362/api/test'.","MessageDetail":"No type was found that matches the controller named 'test'."}
我的项目包含以下 NuGet 包:
- Microsoft.AspNet.Mvc 5.2.3
- Microsoft.AspNet.WebApi 5.2.3
- Microsoft.AspNet.WebApi.Client 5.2.3
- Microsoft.AspNet.WebApi.Core 5.2.3
- Microsoft.AspNet.WebApi.WebHost 5.2.3
我的 Global.asax.cs(摘录):
RouteTable.Routes.Clear();
GlobalConfiguration.Configure(WebApiConfig.Register);
RouteTable.Routes.MapMvcAttributeRoutes();
AreaRegistration.RegisterAllAreas();
RouteConfig.RegisterRoutes(RouteTable.Routes);
我的 WebApiConfig.cs:
using System.Web.Http;
namespace End.Web
{
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
// Web API configuration and services
GlobalConfiguration.Configuration.Formatters.Remove(GlobalConfiguration.Configuration.Formatters.XmlFormatter);
// Web API routes
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
}
}
我的新控制器:
using System.Web.Http;
namespace End.Web.Controllers
{
public class TestController : ApiController
{
public string Get()
{
return "ok";
}
}
}
我也尝试了属性路由,但没有成功。我想做的似乎很简单。我错过了什么明显的东西吗?
【问题讨论】:
-
您是否尝试为
Get()操作设置[HttpGet]属性? -
@Roma Web API v2 自动根据方法名称映射 HTTP 动词 - 这应该不是必需的
-
你能仔细检查你的 WebApiConfig.Register 方法是否真的被命中了吗?
-
@Roma 刚刚尝试 [HttpGet],结果相同。
-
@Anestis Kivranoglou 刚试过这个网址,也不起作用(同样的错误)。
标签: c# asp.net asp.net-mvc asp.net-web-api