[英]Web API 2 Custom Controller method. Routing issue
這是我的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 method”。
如果我瀏覽到http://localhost:52072/api/hello/SayHello
則會在404 not found
時出錯。
有任何想法嗎?
更新路線
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]
annpotation
[HttpGet]
[Route("api/payment/SayHello")]
public string SayHello()
{
return "Hello Jim";
}
或重命名方法名稱和前綴Get
它
[Route("api/payment/SayHello")]
public string GetSayHello()
{
return "Hello Jim";
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.