我正在使用 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/{controller}/{id}
有办法吗?
[编辑] 我将服务区域添加到 Ares 文件夹中,因为在 WebApi MVC 4 的模板中已经存在一个 HelpPage 区域。 在此文件夹中,我添加了 Controller 。
这里是服务区类
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 上添加并将此文件夹服务转换为应用程序。 [/编辑]
最佳答案
您需要像下面这样创建您自己的 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();
更新: 您的文件夹结构应如下所示:
关于c# - 配置路由到api到子文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21863482/