1

複数の WebApi コントローラーを持つ WebApi プロジェクトを作成しました。私の要件に従って、MVC コントローラーを WebApi プロジェクトに追加する必要があります。私のクライアント側のコードは、その MVC コントローラーに ajax リクエストを{ControllerName/ActionMethodName}. 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://" + ホスト名 + "/ReportService/LoadDocumentInfo"

WebApi ルートが MVC コントローラー ルートを抑制していると思います。MVC コントローラー ルートを WebApi ルートから分離するにはどうすればよいですか?

4

1 に答える 1

0

ApiRouteConfig.cs内に WebApi の新しい config クラスを作成できますApp_Start

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.RegisterRoutes(RouteTable.Routes);

于 2013-03-13T11:45:06.890 に答える