【问题标题】:ASP.NET Routing not workingASP.NET 路由不起作用
【发布时间】:2015-10-13 21:58:01
【问题描述】:

我正在努力使路由前缀正常工作,或者可能对 ASP.NET Web API 中的路由有误解

这是我的代码:

public class TestController : ApiController
  {
    // GET: api/Test
    public IEnumerable<string> Get()
    {
        return new string[] { "value1", "value2" };
    }

    // GET: api/Test/5
    public string Get(int id)
    {
        return "value";
    }
    [HttpGet]
    [Route("GetValue")]
    public string GetValue(int id)
    {
        return "best";
    }
    [HttpGet]
    [Route("GetValue1")]
    public string GetValue1(int test)
    {
        return "GetValue";
    }
}

这是每次通话的状态

  1. localhost:52154/api/test/Getvalue1/1(HTTP 错误 404.0 - 未找到)
  2. localhost:52154/api/test/Getvalue1?test=1 ( 找不到网页)
  3. localhost:52154/api/test/Getvalue?id=1(作品返回“值”但不调用GetValue方法)
  4. localhost:52154/api/test/1(作品返回“价值”)
  5. localhost:52154/api/test/ (作品返回 "value1","value2")

请告诉我如何使 GetValue1 和 GetValue 路由正常工作。我确实将 ASP.NET 的 NuGet 包更新为 Web Api 2.2

WebApiConfig 看起来像这样

   config.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "api/{controller}/{action}/{id}",
            defaults: new { id = RouteParameter.Optional }

【问题讨论】:

  • 如果您在那里进行了更改,能否向我们展示您的 WebApiConfig?
  • 我认为在你的路线名称中使用“Get”是行不通的,因为它是一个已经被翻译的特殊术语。试试[Route("RetriveValue")]
  • 您的 web api 路由似乎配置不正确。使用默认路由,所有 get 请求都将映射到 Get 方法、Posts to Post 方法等。很可能您的 WebApiConfig.cs 有一行包含 routeTemplate: "api/{controller}/{id}",您应该将其更改为 routeTemplate: "api/{controller}/{action}/{id}" 以映射操作。你的[Route] 属性不需要这样做。
  • config.Routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "api/{controller}/{id}", defaults: new { id = RouteParameter.Optional } );
  • 在上面看到我的消息

标签: asp.net-mvc asp.net-web-api


【解决方案1】:

这是对我有用的解决方案 公共 IEnumerable Get() { 返回新字符串[] { "value1", "value2" }; }

    // GET: api/Test/5
    public string Get(int id)
    {
        return "value";
    }
    [HttpGet]

    public string GetValue(int id)
    {
        return "best";
    }


    [HttpGet]

    public string RetriveValue(int test)
    {
        return "GetValue";
    }

礼貌 How to bypass the exception multiple actions were found in ASP.NET Web API

【讨论】:

    【解决方案2】:

    使用这个:[ActionName("Getvalue1")]

    希望这行得通!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-03-10
      • 2017-02-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-15
      • 2013-02-23
      相关资源
      最近更新 更多