[RoutePrefix("subscriptions")]
public class SubscriptionsController : ApiController
{
private SubscriptionsService _subscriptionsService;
public SubscriptionsController()
{
_subscriptionsService = new SubscriptionsService();
}
[Route("{email}")]
[HttpGet]
public IHttpActionResult Get(string email)
{
但是当我尝试
时http://localhost:51561/api/subscriptions/myEmail
未找到与请求URI匹配的HTTP资源
'http://localhost:51561/api/subscriptions/myEmail'。
任何想法为什么?
我还在WebApiCOnfig
中设置了所有内容public static class WebApiConfig
{
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 }
);
}
}
答案 0 :(得分:1)
您尝试过错误的网址。 正确的URL应该是,
http://localhost:51561/subscriptions/myEmail
或强>
如果您需要API前缀,则需要更改控制器的路由前缀,如下所示
[RoutePrefix("API/subscriptions")]
然后这个URL就可以了,
http://localhost:51561/api/subscriptions/myEmail
请注意,此处您使用的是两个路由,默认路由和属性路由。如果您需要继续属性路由,则可以注释掉默认路由。
//config.Routes.MapHttpRoute(
// name: "DefaultApi",
// routeTemplate: "api/{controller}/{id}",
// defaults: new { id = RouteParameter.Optional }
答案 1 :(得分:0)
我假设您正在创建一些webApi服务?你在global.asax.cs注册了这条路线吗?像这样:
httpConfiguration.Routes.MapHttpRoute(
name: "MyWebApi",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { controller = "ControllerName", action = "ActionName", id = RouteParameter.Optional },
constraints: null
);