[英]ASP MVC Web API endpoint returning 404
我正在學習Angular 2,並試圖使其在ASP MVC設置上運行。 我正在遵循這份非常出色的指南: https : //www.codeproject.com/Articles/1181888/Angular-in-ASP-NET-MVC-Web-API-Part
我對其做了很小的修改。 原來應該操縱通過API端點api/userapi
從數據庫獲得的名稱列表。 我對其進行了更改,以使其成為來自端點api/postapi
的帖子列表(例如博客或類似內容)。 到目前為止,該項目的Angular部分正在運行。 它是ASP.NET的一部分,無法正常運行。
查看原始項目的配置(我從該鏈接下載並在Visual Studio 2017中進行了很好的測試),並將其與實驗進行了比較,在我的一生中,我無法發現可能對其進行了錯誤配置的地方。
這可能是什么問題? 這是我的Web API部分代碼:
Global.asax.cs
using System.Web.Http;
using System.Web.Mvc;
using System.Web.Optimization;
using System.Web.Routing;
namespace WebAPI
{
public class WebApiApplication : System.Web.HttpApplication
{
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
GlobalConfiguration.Configure(WebApiConfig.Register);
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
}
}
}
RouteConfig.cs
using System.Web.Mvc;
using System.Web.Routing;
namespace WebAPI
{
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{*anything}", // I am suspicious of this line but changing it doesn't fix it
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
}
WebApiConfig.cs
using System.Net.Http.Headers;
using System.Web.Http;
namespace WebAPI
{
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
// Web API configuration and services
// Output as JSON instead of XML
config.Formatters.JsonFormatter.SupportedMediaTypes
.Add(new MediaTypeHeaderValue("application/octet-stream"));
// Web API routes
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
}
}
PostsAPIController.cs
using WebAPI.Models;
using System.Data.Entity;
using System.Linq;
using System.Net.Http;
using System.Web.Http;
namespace WebAPI.Controllers
{
[RoutePrefix("api/postapi")] //this did not help either
public class PostsAPIController : BaseAPIController
{
public HttpResponseMessage Get()
{
return ToJson(_db.TWebSitePostsSet.AsEnumerable());
}
public HttpResponseMessage Post([FromBody]TWebSitePosts value)
{
_db.TWebSitePostsSet.Add(value);
return ToJson(_db.SaveChanges());
}
public HttpResponseMessage Put(int id, [FromBody]TWebSitePosts value)
{
_db.Entry(value).State = EntityState.Modified;
return ToJson(_db.SaveChanges());
}
public HttpResponseMessage Delete(int id)
{
_db.TWebSitePostsSet.Remove(_db.TWebSitePostsSet.FirstOrDefault(x => x.PostId == id));
return ToJson(_db.SaveChanges());
}
}
}
將此代碼[RoutePrefix("api/postapi")]
更改為[Route("api/postapi")]
,看看是否有區別。
並查看此頁面。 屬性路由webapi-2
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.