【发布时间】:2018-01-24 19:08:32
【问题描述】:
在我的 web api 中,我创建了这个控制器:
public class DistributionGroupController : ApiController
{
[HttpGet]
public ServiceResult Index(string id)
{
if (id == null)
return null;
else
return new ServiceResult();
}
}
另外,这是我的路线配置。我将我的通讯组路由的默认操作指定为“索引”:
routes.MapHttpRoute(
"Api action",
"Api/{controller}/{action}"
);
routes.MapHttpRoute(
"Api get",
"Api/{controller}"
);
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}",
new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
/*This is the route in question*/
routes.MapHttpRoute(
"DistGroupRoute",
"api/distributiongroup/{id}/{action}",
new { controller = "DistributionGroup", action = "Index" }
);
在我看来,我正在使用这个脚本来(尝试)点击我的控制器:
$.ajax({
url: "api/distributiongroup/4567bn57n5754",
cache: false,
success: function (response) {
alert('success');
}
});
但我的 ajax 调用收到 404 Not Found 错误。但是,如果我将 index 从我的 ajax 调用附加到我的 url,我的控制器就会被命中。因此,从本质上讲,这不起作用:
api/distributiongroup/4567bn57n5754
但这确实有效:
api/distributiongroup/4567bn57n5754/index
我的理解是,如果我没有在我的网址中指定我的操作,我的默认操作应该会受到影响。我可能在这里缺少什么?而且,更重要的是,当我使用这样的 url 时,如何让我的 Index 控制器受到攻击:
api/distributiongroup/4567bn57n5754
(未指定Index 操作?
【问题讨论】:
标签: c# ajax asp.net-mvc asp.net-mvc-4 routes