我正在使用Web API 2和实体框架开发ASP.Net MVC 5应用程序。我创建了一个带有操作的 WEB API 2 Controller,使用名为 EmployeeAPIController 的Entity Framework 并使用ajax调用来使用API,如下所示。
function loadEmployees() {
alert("In Load");
$.ajax({
type: "GET",
url: "/api/EmployeeAPI",
success: function (data) {
self.Message("Success");
self.Employees(data);
},
error: function (err) {
alert(err.status);
}
});
};
但我总是得到错误404.我的RouteConfig文件配置为
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
}
404应该是什么原因。我是MVC和Web API的初学者。请帮忙。
答案 0 :(得分:4)
问题已经解决。这是因为App_Start文件夹中缺少var app = angular.module("app",[]);
app.directive("myDir",function(){
return {
restrict: 'E',
replace: true,
link: function (scope, iElement, iAttrs) {
var svg = angular.element('<circle cx="10" cy="10" r="50"/>');
iElement.append(svg);
},
template:'<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="400" height="200"><image x="0" y="0" width="400" height="200" xlink:href="http://cdn.sstatic.net/stackexchange/img/logos/so/so-logo.png"/></svg>'
}
});
文件。我手动添加了文件。
WebApiConfig.cs
并将public class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
// Web API configuration and services
// Web API routes
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
}
配置为
Global.asax
它对我有用。谢谢大家的回复。
答案 1 :(得分:0)
你应该在你的webapi.config文件中有这个 -
public static void Register(HttpConfiguration config)
{
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
var appXmlType = config.Formatters.XmlFormatter.SupportedMediaTypes.FirstOrDefault(t => t.MediaType == "application/xml");
config.Formatters.XmlFormatter.SupportedMediaTypes.Remove(appXmlType);
}
您应该拥有如下所示的API控制器 -
public class EmployeeAPIController : ApiController
{
//
// GET: /API/EmployeeAPI/
/// <summary>
///
/// </summary>
/// <returns></returns>
public EmployeeListModel Get()
{
....
}
}
答案 2 :(得分:0)
问题已经解决。这是由于App_Start文件夹中缺少WebApiConfig.cs文件。我手动添加了文件。
公共类WebApiConfig { public static void Register(HttpConfiguration config) { // Web API配置和服务
// Web API routes
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
}
并配置了Global.asax,如
public class MvcApplication : System.Web.HttpApplication
{
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
GlobalConfiguration.Configure(WebApiConfig.Register);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
}
}
!!重要!!还有一件事,删除xxxxxxAreaRegistration.cs&#34;从您的区域文件夹中WEBAPI,否则它将无法正常工作!
适合我,MVC 5