我在我的项目中添加了一个webapi 2控制器,在api中> LoginAPi如下所示:
在LoginApi中我有以下内容:
[RoutePrefix("api/LoginApi")]
public class LoginApi : ApiController
{
// GET api/<controller>/5
public string Get(int id)
{
return "value";
}
}
在我的global.asax文件中,我有:
public class WebApiApplication : System.Web.HttpApplication
{
protected void Application_Start()
{
GlobalConfiguration.Configure(WebApiConfig.Register);
}
}
在App_Start内部我有以下内容:
public static void Register(HttpConfiguration config)
{
// Web API configuration and services
// Web API routes
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
然后我在LoginAPI中的Get方法中放置一个断点并运行项目并在URL中键入以下内容:
http://localhost:37495/api/LoginApi/4
但我明白了:
No HTTP resource was found that matches the request URI 'http://localhost:37495/api/LoginApi/4'.
所以我想好了让我指定方法名称
http://localhost:37495/api/LoginApi/Get/4
返回:
The resource you are looking for has been removed, had its name changed, or is temporarily unavailable.
现在我已经看了一段时间,所以也许我错过了一些明显的东西,但如果有人能告诉我我做错了什么我会非常感激。
答案 0 :(得分:0)
您设置的routeTemplate
将适用于基于约定的路由,但Web API添加字符串&#34; Controller&#34;搜索控制器类时(根据this article)。因此,您需要重命名控制器类LoginApiController
,以使基于约定的路由起作用。
对于基于属性的路由,RoutePrefix
属性的添加应与您的操作的Route
属性结合使用。尝试将以下内容添加到控制器中的Get
方法中:
[HttpGet]
[Route("{id}")]
然后导航到http://localhost:37495/api/LoginApi/4
。