无法找到 Web API 路由?
Not able to find Web API route?
我正在努力弄清楚为什么我无法到达 API 终点。我正在构建一个将调用另一个本地 API 的 Web API,从我所看到的一切来看,它应该到达终点,我正在寻找任何想法。
这是原文中的代码API。我正在使用 RestSharp 拨打电话。
string jsonToSend = JsonConvert.SerializeObject(m);
var request = new RestRequest("CheckForDuplicateID", Method.POST);
request.AddParameter("application/json; charset=utf-8", jsonToSend, ParameterType.RequestBody);
request.RequestFormat = DataFormat.Json;
request.AddParameter("CandidateID", m.CandidateID);
request.AddParameter("FirstName", m.FirstName);
request.AddParameter("LastName", m.LastName);
var client = new RestClient("http://localhost:60077/api/IDM/");
var content = client.Execute(request).Content;
这是我要到达的中学 API 的终点。
[HttpPost]
public static DuplicateCheck CheckForDuplicateID([FromBody] DuplicateCheck m)
{
....code
}
这是我的 RouteConfig.cs 文件。我已经尝试了两条路线,但都没有用。
public static void Register(HttpConfiguration config)
{
// Web API configuration and services
// Web API routes
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
//config.Routes.MapHttpRoute(
// name: "DefaultApi",
// routeTemplate: "api/{controller}/{id}",
// defaults: new { id = RouteParameter.Optional }
);
}
当我在本地启动辅助 API 时,它是我在上面硬编码的 localhost:60077
上的 运行。我的控制器的名称是 IDMController,这是我收到的消息,但 URL 对我来说是正确的。
{"Message":"No HTTP resource was found that matches the request URI 'http://localhost:60077/api/IDM/CheckForDuplicateID'.","MessageDetail":"No type was found that matches the controller named 'IDM'."}
操作必须是 ApiController
的实例成员,而不是 static
。
[HttpPost]
public DuplicateCheck CheckForDuplicateID([FromBody] DuplicateCheck m) {
....code
}
由于
启用了属性路由
config.MapHttpAttributeRoutes();
考虑在 API 控制器上使用属性路由以获得所需的行为
[RoutePrefix("api/IDM")]
public class IDMController : ApiController {
//...
//POST api/IDM/CheckForDuplicateID
[HttpPost]
[Route("CheckForDuplicateID")]
public DuplicateCheck CheckForDuplicateID([FromBody] DuplicateCheck m) {
....code
}
}
我正在努力弄清楚为什么我无法到达 API 终点。我正在构建一个将调用另一个本地 API 的 Web API,从我所看到的一切来看,它应该到达终点,我正在寻找任何想法。
这是原文中的代码API。我正在使用 RestSharp 拨打电话。
string jsonToSend = JsonConvert.SerializeObject(m);
var request = new RestRequest("CheckForDuplicateID", Method.POST);
request.AddParameter("application/json; charset=utf-8", jsonToSend, ParameterType.RequestBody);
request.RequestFormat = DataFormat.Json;
request.AddParameter("CandidateID", m.CandidateID);
request.AddParameter("FirstName", m.FirstName);
request.AddParameter("LastName", m.LastName);
var client = new RestClient("http://localhost:60077/api/IDM/");
var content = client.Execute(request).Content;
这是我要到达的中学 API 的终点。
[HttpPost]
public static DuplicateCheck CheckForDuplicateID([FromBody] DuplicateCheck m)
{
....code
}
这是我的 RouteConfig.cs 文件。我已经尝试了两条路线,但都没有用。
public static void Register(HttpConfiguration config)
{
// Web API configuration and services
// Web API routes
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
//config.Routes.MapHttpRoute(
// name: "DefaultApi",
// routeTemplate: "api/{controller}/{id}",
// defaults: new { id = RouteParameter.Optional }
);
}
当我在本地启动辅助 API 时,它是我在上面硬编码的 localhost:60077
上的 运行。我的控制器的名称是 IDMController,这是我收到的消息,但 URL 对我来说是正确的。
{"Message":"No HTTP resource was found that matches the request URI 'http://localhost:60077/api/IDM/CheckForDuplicateID'.","MessageDetail":"No type was found that matches the controller named 'IDM'."}
操作必须是 ApiController
的实例成员,而不是 static
。
[HttpPost]
public DuplicateCheck CheckForDuplicateID([FromBody] DuplicateCheck m) {
....code
}
由于
启用了属性路由config.MapHttpAttributeRoutes();
考虑在 API 控制器上使用属性路由以获得所需的行为
[RoutePrefix("api/IDM")]
public class IDMController : ApiController {
//...
//POST api/IDM/CheckForDuplicateID
[HttpPost]
[Route("CheckForDuplicateID")]
public DuplicateCheck CheckForDuplicateID([FromBody] DuplicateCheck m) {
....code
}
}