我正在使用MVC 4开发webapi。 我对路由器有疑问。 如何路由到我的网站下的子文件夹。例如:
www.site.com/Service
我的WebApi应用程序位于服务文件夹中。我的主页工作正常,但找不到API。
默认情况下,这是我的路线:
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
我想打电话
www.site.com/Service/api/ {控制器} / {ID}
有办法做到这一点吗?
[编辑] 我在Ares文件夹中添加了Service区域,因为在WebApi MVC 4的模板中已经存在一个HelpPage区域。 在这个文件夹里面我添加了控制器。
这是服务区类
public class ServiceAreaRegistration : AreaRegistration
{
public override string AreaName
{
get
{
return "Service";
}
}
public override void RegisterArea(AreaRegistrationContext context)
{
context.MapRoute(
"Service_default",
"Service/api/{controller}/{id}",
new { id = UrlParameter.Optional }
);
}
}
我不知道是否有这个帮助,我的网站www.site.com只是一个网站,我添加并将此文件夹服务转换为我的iis上的应用程序。 [/编辑]
答案 0 :(得分:4)
您需要创建自己的AreaRegistration
,如下所示。
public class ServiceAreaRegistration : AreaRegistration
{
public override string AreaName
{
get{ return "Service";}
}
public override void RegisterArea(AreaRegistrationContext context)
{
context.Routes.MapHttpRoute(
name: "ServiceDefaultApi",
routeTemplate: "Service/api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
}
您还需要确保在Application_Start()
AreaRegistration.RegisterAllAreas();
更新: 您的文件夹结构应如下所示: