在過去的幾個小時中,我嘗試執行web api action
在asp.net webforms website
中託管。 我知道它的有線但是由於舊的項目設計,我必須做的this.each時間我稱之爲Controller
動作我得到從ASP.NET網站Webforms調用ASP.Net Web API
{"Message":"No HTTP resource was found that matches the request URI 'http://localhost:3049/api/chart/test?id=58'.","MessageDetail":"No action was found on the controller 'Chart' that matches the request."}
我的項目結構如下: -
我的類代碼看起來非常簡單: -
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
// Web API configuration and services
config.EnableCors();
// Web API routes
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new {id = RouteParameter.Optional }
);
config.Formatters.JsonFormatter.SupportedMediaTypes.Add(new MediaTypeHeaderValue("text/html"));
}
}
我的控制器: -
[EnableCors(origins: "*", headers: "*", methods: "*")]
public class ChartController : ApiController
{
[HttpGet]
public static string test(string id)
{
return id;
}
}
我想念什麼?
我從來沒有見過像這樣的靜態控制器方法。它不應該是一個實例方法嗎?另外,路由映射似乎並不意味着在路由中使用動作名稱。根據WebAPI的版本,您可能需要簡單地命名方法'Get''而不是'test'。 – David