在我添加新控制器时使用VS 2017创建的项目(包括MVC和Web API)中,默认路由将Index()函数调用到该新API控制器,但浏览到任何其他方法失败。
API代码
/products/{resource}/
Startup类的代码如下:
namespace TestApi.Controllers
{
[Produces("application/json")]
[Route("api/TestAPI")]
public class TestAPIController : Controller
{
public string Index()
{
//if (!_signInManager.IsSignedIn(User))
//return RedirectToAction("Login", "Account");
return "View()";
}
//[Route("GetTestData")]
[HttpGet]
private string GetTestData()
{
return "Data";
}
}
}
所以浏览到“https://localhost:44314/api/TestAPI”有效,但当我尝试浏览“https://localhost:44314/api/TestAPI/GetTestData”时,我发现找不到页面错误。
感谢您的帮助。
答案 0 :(得分:3)
使用此:
[Route("api/[controller]/[action]")]
public class TestAPIController : Controller
{
}
然后您可以浏览所有操作。
但可能想要更改操作名称,因此您应该像这样编码:
[Route("api/[controller]/[action]")]
public class TestAPIController : Controller
{
[ActionName("start-here")]
public JsonResult Start()
{
return Json();
}
}
并且您可以使用具有以下参数的操作获得特定路径:
[Route("api/[controller]/[action]")]
public class TestAPIController : Controller
{
[ActionName("start-here")]
public JsonResult Start()
{
return Json();
}
[route("api/[controller]/nearby-businesses/{locationType}")]
public JsonResult nearby_businesses(string locationType)
{
return Json();
}
}
答案 1 :(得分:0)
可能是您的GetTestData操作方法是私有的。尝试公开。