Web API 2自定义控制器方法.路由问题
本文关键字:方法 路由 问题 控制器 自定义 API Web | 更新日期: 2023-09-27 18:12:26
这是我的Global.asmx
public class WebApiApplication : System.Web.HttpApplication
{
protected void Application_Start()
{
GlobalConfiguration.Configure(WebApiConfig.Register);
}
}
这是我的WebApiConfig类。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}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
}
这是我的ApiController
public class HelloController : ApiController
{
public string Get()
{
return "get method";
}
[Route("SayHello")]
public string SayHello()
{
return "Hello Jim";
}
}
如果我浏览到http://localhost:52072/api/hello/get
,那么我将按照预期收到"get方法"。
如果我浏览到http://localhost:52072/api/hello/SayHello
,那么它与404 not found
错误。
任何想法?
来源:ASP中的属性路由。. NET Web API 2
更新路线
public class PaymentController : ApiController {
public string Get() {
return "get method";
}
//GET api/payment/SayHello
[HttpGet]
[Route("api/payment/SayHello")]
public string SayHello() {
return "Hello Jim";
}
}
也可以使用路由前缀
[RoutePrefix("api/payment")]
public class PaymentController : ApiController {
//GET api/payment/Get
[HttpGet]
[Route("Get")]
public string Get() {
return "get method";
}
//GET api/payment/Sayhello
[HttpGet]
[Route("SayHello")]
public string SayHello() {
return "Hello Jim";
}
}
设置属性路由匹配您的请求url,并且您需要在方法名称中前缀Get
或需要在方法之前放置[HttpGet]
注释
[HttpGet]
[Route("api/payment/SayHello")]
public string SayHello()
{
return "Hello Jim";
}
或重命名方法名并在其前面加上前缀Get
[Route("api/payment/SayHello")]
public string GetSayHello()
{
return "Hello Jim";
}