C# 4.0 找不到WebApi区域
我有一个WebApi项目,我正在尝试向其中添加一个区域 在向webapi项目添加新区域时,与向mvc4应用程序添加新区域时,是否需要执行一些不同的操作 我有一个简单的区域注册,如C# 4.0 找不到WebApi区域,c#-4.0,asp.net-mvc-4,asp.net-web-api,C# 4.0,Asp.net Mvc 4,Asp.net Web Api,我有一个WebApi项目,我正在尝试向其中添加一个区域 在向webapi项目添加新区域时,与向mvc4应用程序添加新区域时,是否需要执行一些不同的操作 我有一个简单的区域注册,如 public class MobileAreaRegistration : AreaRegistration { public override string AreaName { get { return "Mobile"; }
public class MobileAreaRegistration : AreaRegistration
{
public override string AreaName
{
get
{
return "Mobile";
}
}
public override void RegisterArea(AreaRegistrationContext context)
{
context.MapRoute(
"Mobile_default",
"Mobile/{controller}/{action}/{id}",
new { action = "Index", id = UrlParameter.Optional }
);
}
}
像这样的控制器
public class BusinessDetailsController : BaseController
{
public string Index()
{
return "hello world";
}
public HttpResponseMessage Get()
{
var data = new List<string> {"Store 1", "Store 2", "Store 3"};
return Request.CreateResponse(HttpStatusCode.OK, data);
}
}
公共类BusinessDetails控制器:BaseController
{
公共字符串索引()
{
返回“你好世界”;
}
公共HttpResponseMessage Get()
{
var数据=新列表{“存储1”、“存储2”、“存储3”};
返回请求.CreateResponse(HttpStatusCode.OK,数据);
}
}
然而,我永远无法访问api。我是在做一些愚蠢的事情,还是需要对webapi执行额外的步骤?您的代码为该区域注册了MVC路由,而不是webapi路由 为此,请使用
maphttroute
扩展方法(您需要为System.Web.Http
添加一个using语句)
但是,ASP.NET Web API中并不真正支持OOTB区域,如果有两个同名的控制器(无论它们是否位于不同的区域),则会出现异常
要支持此方案,您需要更改控制器的选择方式。您会发现一篇文章介绍了如何做到这一点。您的代码为该区域注册了MVC路由,而不是Web API路由 为此,请使用
maphttroute
扩展方法(您需要为System.Web.Http
添加一个using语句)
但是,ASP.NET Web API中并不真正支持OOTB区域,如果有两个同名的控制器(无论它们是否位于不同的区域),则会出现异常
要支持此方案,您需要更改控制器的选择方式。你会发现一篇文章介绍了如何做到这一点
public override void RegisterArea(AreaRegistrationContext context)
{
context.Routes.MapHttpRoute(
name: "AdminApi",
routeTemplate: "admin/api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
context.MapRoute(
"Admin_default",
"Admin/{controller}/{action}/{id}",
new { action = "Index", id = UrlParameter.Optional }
);
}