2013-07-26 64 views
0

按照此问题的步骤How to add Web API to an existing ASP.NET MVC 4 Web Application project?,我已将web api支持添加到我的应用程序。将Web Api控制器添加到现有的ASP.NET 4 Web应用程序

我在原来的方案中,我有以下的Web MVC控制器:

public class FranchiseController : Controller 
    { 


     public ActionResult List() 
     { 
      return View(); 
     } 



     [DataContext] 
     public ActionResult GetAllFranchises() 
     { 
      var franchiseInfoViewModelList = new List<FranchiseInfoViewModel>(); 

      var franchiseInfoList = _franchiseService.GetAll(); 

      foreach (var franchiseInfo in franchiseInfoList) 
      { 
       franchiseInfoViewModelList.Add(new FranchiseInfoViewModel(franchiseInfo, p => p.IsImportant)); 
      } 

      var jsonNetResult = new JsonNetResult 
      { 
       Formatting = Formatting.Indented, 
       Data = franchiseInfoViewModelList 
      }; 

      return jsonNetResult; 
     } 
    } 

当用户导航到列表视图,我打电话

$.getJSON("/franchise/GetAllFranchises") 
       .done(function (data) { 

       }); 

GetAllFranchises操作方法和返回json数据。到现在为止还挺好。

我已经创建了下面的Web API控制器:

public class FranchiseController : ApiController 
    { 
     public IEnumerable<FranchiseInfoViewModel> GetAllFranchises() 
     { 
      var allFranchises = new List<FranchiseInfoViewModel>(); 

      var franchiseInfoList = _franchiseService.GetAll(); 

      foreach (var franchiseInfo in franchiseInfoList) 
      { 
       allFranchises.Add(new FranchiseInfoViewModel(franchiseInfo, p => p.IsImportant)); 
      } 

      return allFranchises; 
     } 
    } 

,我试图去其操作方法是这样的:

$.getJSON("api/franchise") 
       .done(function (data) { 

       }); 

我得到404错误和应用程序试图以达到以下网址:

/Franchise/api/franchise 

而不是api/franchise

全球ASAX:

protected void Application_Start() 
     { 
      Log.StartSession(); 
      ElmahExtension.SetCurrentApplication(this); 

      ViewEngines.Engines.Add(new OmegaViewEngine()); 
      AreaRegistration.RegisterAllAreas(); 

      SerializerConfig.Register(GlobalConfiguration.Configuration); 
      WebApiConfig.Register(GlobalConfiguration.Configuration); 
      FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); 
      RouteConfig.RegisterRoutes(RouteTable.Routes); 
      BundleConfig.RegisterBundles(BundleTable.Bundles); 
      AuthConfig.RegisterAuth(); 
      Bootstrapper.Initialise(); 
      FluentValidationModelValidatorProvider.Configure(); 

     } 

默认路由:

public static void Register(HttpConfiguration config) 
     { 
      config.Routes.MapHttpRoute(
       name: "DefaultApi", 
       routeTemplate: "api/{controller}/{id}", 
       defaults: new { id = RouteParameter.Optional } 
      ); 
     } 

在我的Controllers文件夹,我有我的Web MVC控制器:

Controller\FranchiseController 

,我已经做了一个新的文件夹的WebAPI举行我的网络API控制器

Controller\WebAPI\FranchiseController 

我在做什么错?谢谢!

回答

0

我不确定是否将MVC Internet应用程序控制器和MVC Web API控制器命名为“FranchiseController”是正确的举动(完全不同的东西)。重命名其中一个后,我认为你应该把Web Api控制器放在目录的根目录(Controller)中。

相关问题