簡體   English   中英

Web API 2自定義控制器方法。 路由問題

[英]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時出錯。

有任何想法嗎?

來源: 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] 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM