我正在尝试使用.Net Core MVC创建Web API。如果我只在控制器上声明一个方法,我可以使用来自另一个应用程序的HttpClient来调用API。但是,如果我向控制器添加第二个公共方法,HttpClient调用总是返回状态代码500,无论我调用哪种方法,我都找不到来自服务器的任何错误。我错过了什么,这将允许我从同一个控制器声明多个方法?
success: function(data){
var response = jQuery.parseJSON(data);
alert(response.value);
}
答案 0 :(得分:1)
Route
应为RoutePrefix
然后你可以
Route
,如下所示。使用开箱即用的路由配置,您甚至不需要上面定义的值,因为它被配置为默认转到api/[controller]
。action
指定为全局路由配置的一部分,并使用占位符。默认情况下,没有动作占位符,并且路由是基于Http Verb(获取,放置,删除,发布)完成的。包含RoutePrefix
和Route
属性的代码
[RoutePrefix("api/Values")]
public class ValuesController : Controller
{
[Route("Method1")]
public async Task<ResponseInfoList> Method1([FromBody]RequestInfoList value)
{
return new ResponseInfoList() {};
}
[Route("Method2")]
public async Task<ResponseInfoList> Method2([FromBody]RequestInfoList value)
{
return new ResponseInfoList() { };
}
}
答案 1 :(得分:0)
感谢您帮助@Igor。看起来他们在MVC 6中删除了RoutePrefix。这就是我最终的结果。
[Route("api/[controller]")]
public class ValuesController : Controller
{
[Route("Method1")]
public async Task<ResponseInfoList> Method1([FromBody]RequestInfoList value)
{
return new ResponseInfoList() {};
}
[Route("Method2")]
public async Task<ResponseInfoList> Method2([FromBody]RequestInfoList value)
{
return new ResponseInfoList() { };
}
}