我是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
}
}
}
我只在其中放置“返回测试”作为Stack Overflow的示例,因为它包含大量代码。
所以,如果我在jQuery中使用它,我将使用什么路径作为控制器?
答案 0 :(得分:5)
除了有关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
。
答案 1 :(得分:1)
将控制器重命名为TestApiController
,并从路径中删除{action}参数。
答案 2 :(得分:0)
那应该只是
http://[yourserver]/[yourapp]/api/testapi
或
http://[yourserver]/api/testapi
取决于您设置应用程序的方式
答案 3 :(得分:0)
即使是WebApi控制器,您的控制器名称是否应该以“Controller”结尾?
我认为
public class TestAPI : ApiController
应该是
public class TestAPIController : ApiController