新建項目 Main:
添加一個MVC5控制器並添加index視圖:(HomeController)
Views/Home/Index.cshtml內容:
@{ Layout = null; } <!DOCTYPE html> <html> <head> <meta name="viewport" content="width=device-width" /> <title>Index</title> </head> <body> <div> <h1>Main Inde 頁面</h1> </div> </body> </html>
添加一個默認API控制器
內容:
public class DefaultController : ApiController { [HttpGet] public object get() { return "main API"; } }
給項目添加區域(Admin):
會自動添加一個Areas文件夾,文件夾下子文件名和區域名相同
給Admin添加一個MVC5控制器和一個API控制器
視圖代碼:
@{ Layout = null; } <!DOCTYPE html> <html> <head> <meta name="viewport" content="width=device-width" /> <title>Index</title> </head> <body> <div> <h1>Admin Page</h1> </div> </body> </html>
API代碼:
public class AdminAPIController : ApiController
{
[HttpGet]
public object get()
{
return "Admin API";
}
}
運行項目:
區域頁面正常顯示!區域的api無法訪問:
修改住項目的api路由:
代碼:
public static class WebApiConfig { public static void Register(HttpConfiguration config) { // Web API 配置和服務 // Web API 路由 config.MapHttpAttributeRoutes(); config.Routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "api/{controller}/{id}", defaults: new { id = RouteParameter.Optional } ); // 添加區域API路由轉播 config.Routes.MapHttpRoute( name: "Admin_DefaultApi", routeTemplate: "Admin/api/{controller}/{id}", defaults: new { area = "Admin", id = RouteParameter.Optional } ); } }
routetemplate:區域api的路由
area:區域名稱
項目Global中把API路由配置放到第一行,(放下面會報404錯誤)
運行項目,正常訪問:
接下來新建一個mvc子項目,並添加mvc控制器和api控制器:
添加一個區域注冊類:
public class SecondAreaRegistration : AreaRegistration { //區域名稱 public override string AreaName { get { return "Second"; } } //注冊區域路由 public override void RegisterArea(AreaRegistrationContext context) { context.MapRoute( "Second_default", "Second/{controller}/{action}/{id}", new { action = "Index", id = UrlParameter.Optional } ); } }
修改API路由,添加second的路由:
public static class WebApiConfig { public static void Register(HttpConfiguration config) { // Web API 配置和服務 // Web API 路由 config.MapHttpAttributeRoutes(); config.Routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "api/{controller}/{id}", defaults: new { id = RouteParameter.Optional } ); // 添加AdminAPI路由轉播
config.Routes.MapHttpRoute( name: "Admin_DefaultApi", routeTemplate: "Admin/api/{controller}/{id}", defaults: new { area = "Admin", id = RouteParameter.Optional } ); // 添加SecondAPI路由轉播
config.Routes.MapHttpRoute( name: "Second_DefaultApi", routeTemplate: "Second/api/{controller}/{id}", defaults: new { area = "Second", id = RouteParameter.Optional } ); } }
發布項目:
在Main發布后的文件夾中新建一個Second的區域文件夾:
復制Second項目發布的Views文件夾到Main/Areas/Second
如果有類庫或者js腳本的話,復制到Main根目錄中響應的文件夾下
復制Second/bin到Main/bin
配置IIS:
權限不足的話復制到非系統盤:
運行結果: