Asp.net mvc 独立的MVC和webAPI控制器路由
我创建了一个WebApi项目,它有多个WebApi控制器。根据我的要求,我必须在我的WebApi项目中添加一个MVC控制器。我的客户端代码正在使用Asp.net mvc 独立的MVC和webAPI控制器路由,asp.net-mvc,routes,asp.net-web-api,Asp.net Mvc,Routes,Asp.net Web Api,我创建了一个WebApi项目,它有多个WebApi控制器。根据我的要求,我必须在我的WebApi项目中添加一个MVC控制器。我的客户端代码正在使用{ControllerName/ActionMethodName}向该MVC控制器发出ajax请求。我的global.asax文件中有多条路由: routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); routes.MapHttpRoute( name: "DefaultApi", rout
{ControllerName/ActionMethodName}
向该MVC控制器发出ajax请求。我的global.asax文件中有多条路由:
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
);
routes.MapHttpRoute(
name: "ActionRoute",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
下面是我的ReportServiceBaseController
:
protected virtual ReportServiceBase CreateReportService();
[HttpPost]
public JsonResult LoadDocumentInfo(LoadDocumentInfoRequest request);
[HttpPost]
public JsonResult LoadDocumentMapInfo(LoadDocumentMapInfoRequest request);
[HttpPost]
public JsonResult LoadDocumentMapInfoFull(LoadDocumentMapInfoFullRequest request);
[HttpPost]
public JsonResult LoadPageInfo(LoadPageInfoRequest request);
我在ReportService
控制器中继承该控制器:
public class ReportServiceController : ReportServiceBaseController
{
protected override PerpetuumSoft.Reporting.WebViewer.Server.ReportServiceBase CreateReportService()
{
return new ServiceClass();
}
}
发出请求的客户端URL:
“http://“+hostName+”/ReportService/LoadDocumentInfo”
我认为WebApi路由正在抑制MVC控制器路由。如何将MVC控制器路由与WebApi路由分离?您可以在应用程序启动
中创建一个新的WebApi配置类,ApiRouteConfig.cs
namespace Mvc4App
{
public class ApiRouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.MapHttpRoute(
name: "ActionRoute",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
}
}
然后,编辑Global.asax.cs
,调用ApiRouteConfig.registeroutes(RouteTable.Routes)
您能告诉我们您认为路由已被抑制的请求URL吗(通常,创建路由的方式是通过URL中的api
部分阻止抑制)。我用代码编辑了问题。谢谢你的回答。我做了与你解释的相同的事情。但仍然不起作用。首先我注册了API路由,然后是MapRoute。如果我先注册MapRoute,则无法调用API方法。请帮助。