C# 配置到子文件夹的api路由
我正在使用MVC4开发一个webapi。 我对路由器有怀疑。 如何路由到“我的网站”下的子文件夹。例如: www.site.com/Service 我的WebApi应用程序位于服务文件夹中。我的主页工作正常,但找不到API 以下是默认情况下我的路线:C# 配置到子文件夹的api路由,c#,asp.net-mvc-4,asp.net-web-api,routes,C#,Asp.net Mvc 4,Asp.net Web Api,Routes,我正在使用MVC4开发一个webapi。 我对路由器有怀疑。 如何路由到“我的网站”下的子文件夹。例如: www.site.com/Service 我的WebApi应用程序位于服务文件夹中。我的主页工作正常,但找不到API 以下是默认情况下我的路线: config.Routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "api/{controller}/{id}",
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
我想打电话
www.site.com/Service/api/{controller}/{id}
有办法做到这一点吗
[编辑]
我将服务区域添加到Ares文件夹中,因为WebApi MVC 4模板中已经存在一个帮助页面区域。
在这个文件夹中,我添加了控制器
这是服务区课程
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上添加并转换了这个文件夹服务。
[/Edit]您需要创建自己的
区域注册
,如下图所示,以使其正常工作
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\u Start()中有以下代码
更新:
您的文件夹结构应如下所示:
我应该添加哪个命名空间?您可以将ServiceAreaRegistration
类放入Global.asax
文件中。我在项目中添加了一个区域,并且我确信我在应用程序\u Start()中有该代码。但它不起作用=/确保您有一个文件夹调用服务
,并且您的Web API控制器也在该文件夹内。为什么要从使用AreaRegistration with Web API开始?区域是一个MVC概念。
AreaRegistration.RegisterAllAreas();