【问题标题】:Web API Controller path?Web API 控制器路径?
【发布时间】:2014-02-12 19:47:13
【问题描述】:

我是 Web API 的新手并遵循了一些示例,但我无法确定控制器名称的指定位置。

我的 global.asax 中有这个:

protected void Application_Start(object sender, EventArgs e)
{
    RouteTable.Routes.MapHttpRoute(
    name: "API Controller",
    routeTemplate: "api/{controller}/{action}/{id}",
    defaults: new { id = System.Web.Http.RouteParameter.Optional }
    );
}

我有一个名为 TestAPI.cs 的控制器

这是内容:

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

        // GET api/<controller>/5
        public string Get(int id)
        {
            string test= "Hello!";
            return test
        }
    }
}

我只是把“return test”放在那里作为堆栈溢出的一个例子,因为它包含很多代码。

如果我在 jQuery 中使用它,我会为控制器使用什么路径?

【问题讨论】:

  • 你的控制器名称应该是TestAPIController.cs
  • Controller 可以位于项目中的任何位置,但建议保留在 Controllers 下。文件名可以是任何东西。在整个项目中搜索类TestAPIController
  • 嗯,我似乎不断收到 404 错误消息,我尝试什么?

标签: c# asp.net-web-api asp.net-web-api2


【解决方案1】:

除了有关 Web Api 控制器名称的命名约定外,您还需要更改路由配置。见下文:

1) 更改您的 TestAPI 控制器,如下所示:

 public class TestAPIController : ApiController

2) 在 Application_Start 方法中更改 MapHttpRoute,如下所示:

    GlobalConfiguration.Configuration.Routes.MapHttpRoute(
      name: "API Controller",
      routeTemplate: "api/{controller}/{id}",
      defaults: new { id = RouteParameter.Optional }
      );

注意:不要忘记将实际文件名从TestAPI.cs 更改为TestAPIController.cs

【讨论】:

  • 嗨,林,我已根据您的回答更改了此设置,但仍然没有运气!给我一个404!谢谢
  • 嗨@realtek,我想您忘记将文件名TestAPI.cs 更改为TestAPIController.cs,请参阅我的更新答案。
  • 嗨,林,是的,我也这样做了,但仍然没有运气。您能否确认文件系统结构应该是什么?例如,TestAPIController.cs 是否在 api/Controllers/TestAPIController.cs 内部?还是它实际上不查看任何文件系统?谢谢
  • TestAPIController.cs 文件应该在 Controller 文件夹中。如果没有,您需要更改路线。
  • 谢谢林!我现在开始工作了,我刚刚阅读了asp.net/web-api/overview/web-api-routing-and-actions/… 我没有意识到您需要从客户端请求中删除“控制器”位。它会自动添加到 {controller} 占位符的末尾。现在可以使用了,谢谢
【解决方案2】:

将控制器重命名为 TestApiController 并从路由中删除 {action} 参数。

【讨论】:

    【解决方案3】:

    应该是这样的

    http://[yourserver]/[yourapp]/api/testapi
    

    http://[yourserver]/api/testapi
    

    取决于您如何设置应用程序

    【讨论】:

    • 嗯,我似乎不断收到 404 错误消息,我尝试的任何东西?
    【解决方案4】:

    即使是 WebApi 控制器,您的控制器名称不应该以“Controller”结尾吗?

    我认为

    public class TestAPI : ApiController
    

    应该是

    public class TestAPIController : ApiController
    

    【讨论】:

      猜你喜欢
      • 2015-05-04
      • 1970-01-01
      • 1970-01-01
      • 2020-01-04
      • 1970-01-01
      • 2019-10-06
      • 2016-07-12
      • 2017-04-15
      • 1970-01-01
      相关资源
      最近更新 更多