按照这个问题的步骤如何将 Web API 添加到现有的 ASP.NET MVC 4 Web 应用程序项目?,我在我的应用程序中添加了 web api 支持。
在我原来的场景中,我有以下 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
action 方法并返回 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
.
全球阿萨克斯:
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 来保存我的 Web api 控制器
Controller\WebAPI\FranchiseController
我究竟做错了什么 ?谢谢!