通过测试和浪费大量时间,我发现ASP.NET MVC有一个错误,阻止使用字符串" api"在请求URL中。我想用这样的URL访问我的方法
www.mysite.com/api/test
这不是意料之外的愿望。事实上,它是一个明显的Url选择。
是否有解决方法来实现这一目标?
更新
按请求路由定义。
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
// this executes, checked it in debugger
routes.MapRoute(
name: "Test",
url: "api/test",
defaults: new { controller = "Api", action = "Test" }
);
}
ApiController
public class ApiController : Controller
{
public ActionResult Test()
{
return Content("TEST TEST TEST");
}
{
答案 0 :(得分:2)
如果安装了WebApi软件包,您将在App_Start中找到WebApiConfig.cs类。这是它的样子:
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
}
因此,假设您未更改Global.asax.cs中的默认代码,此路由将添加到路由表中。因此,为什么你的/ api /无论什么路线都不起作用。
如果您没有使用WebApi,我建议您删除这些软件包。否则,您只需将API路径的“根”部分更改为其他内容:
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
config.Routes.MapHttpRoute(
name: "DefaultApi",
/* changed 'api' to 'restsvc' */
routeTemplate: "restsvc/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
}