所以我已经设置了一个ASP.NET WebAPI应用程序,每当我尝试调用API时,我都会收到以下消息:
<Error>
<Message>
No HTTP resource was found that matches the request URI
'http://localhost:62834/api/PiDBTest'.
</Message>
<MessageDetail>
No type was found that matches the controller named 'PiDBTest'.
</MessageDetail>
</Error>
我尝试了几个不同的网址来调用API,但仍无法随意使用它。 我一直在使用以下网址来调用API
http://localhost:62834/api/PiDBTest
似乎无法理解为什么我没有从通话中获得任何成功?
以下是API控制器和RouteConfig的代码
PiDBTest:
public class PiDBTest : ApiController
{
private pidbEntities db = new pidbEntities();
// GET: api/PiDBTest
public IQueryable<PiData> GetPiDatas()
{
return db.PiDatas;
}
}
RouteConfig:
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
config.SuppressDefaultHostAuthentication();
config.Filters.Add(new HostAuthenticationFilter(OAuthDefaults.AuthenticationType));
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
}
答案 0 :(得分:2)
启用属性路由后,这将有效。
[RoutePrefix("api/PiDBTest")]
public class PiDBTest : ApiController
{
private pidbEntities db = new pidbEntities();
// GET: api/PiDBTest
[HttpGet]
[Route("")]
public IQueryable<PiData> GetPiDatas()
{
return db.PiDatas;
}
}
答案 1 :(得分:1)
请尝试更改您的API类,如下所示
public class PiDBTestController : ApiController
{
private pidbEntities db = new pidbEntities();
// GET: api/PiDBTest
[HttpGet]
[Route("")]
public IQueryable<PiData> GetPiDatas()
{
return db.PiDatas;
}
}
答案 2 :(得分:0)
你可以在你的方法之上添加[HttpGet]吗? public IQueryable GetPiDatas()
答案 3 :(得分:0)
在我的情况下,控制器类名称中未包含单词“ Controller”。我将类名称从“ Vendor”更改为“ VendorController”,然后它开始工作。