我有幾個自己的控制器,路由基本上是由屬性組成的。問題是,當我用 Postman 模擬我的 http 請求時,程序似乎不知道所提供的路由。我的控制器看起來像這樣:[RoutePrefix("register")]public class RegisterController : ApiController{ private readonly IRegisterService _service; public RegisterController(IRegisterService service) { _service = service; } [HttpPost] [Route("simple")] public void RegisterSimple(RegisterArgs args) { _service.RegisterSimple(args); }}請注意,Global.asax.cs 調用了與 Web Api 2 兼容的配置:public class WebApiApplication : System.Web.HttpApplication{ protected void Application_Start() { GlobalConfiguration.Configure(WebApiConfig.Register); // DI Registrations }}...并且 WebApiConfig 調用 MapHttpAttributeRoutes() :public static class WebApiConfig{ public static void Register(HttpConfiguration config) { // Web API configuration and services // Web API routes config.MapHttpAttributeRoutes(); config.Routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "api/{controller}/{id}", defaults: new { id = RouteParameter.Optional } ); }}當我嘗試使用 uri 從 Postman 調用 POST 方法時http://localhost:63575/api/register/simple我得到以下答案:{ "Message": "No HTTP resource was found that matches the request URI 'http://localhost:63575/api/register/simple'.", "MessageDetail": "No action was found on the controller 'Register' that matches the request."}我相信問題出在路由配置中。我調試了它,在兩個方法調用(config.MapHttpAttributeRoutes() 和 config.Routes.MapHttpRoute)之后,配置只有兩個路由:一個帶有空 RouteTemplate (""),另一個由 MapHttpRoute() 調用提供("api/ {控制器}/{id}”)。我的問題是 - 如何通過屬性正確配置路由?
1 回答

慕碼人2483693
TA貢獻1860條經(jīng)驗 獲得超9個贊
您的控制器級路由前綴應以“api”開頭,如下所示:
[RoutePrefix("api/register")] public class RegisterController : ApiController
- 1 回答
- 0 關注
- 168 瀏覽
添加回答
舉報
0/150
提交
取消